http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4252426&page=1#pid24591502
我赶脚这两个问题还是不太一样勒,这个是Base public, Derived private,当然virtual和访问控制没关系就是了。也就是访问控制编译时检查了Base *就完事了?
#include <iostream>
using namespace std;
class Base {
public:
virtual void func(void) { cout << "Base" << endl; }
};
class Derived : public Base {
private:
void func(void) { cout << "Derived" << endl; }
};
int main(void) {
Base *b = new Derived();
b->func();
return 0;
}
我好像很久没有写代码了,哈哈 反正cpp的东西,你用多了无非两个结果,要么成为神经病,要么就是大牛 回复 4# lxyscls
其实是一样的,virtual表示这个方法可以被子类覆盖,public/private标明访问权限。在一个类中声明为public的方法,外部代码可以通过该类的指针/引用直接访问,在子类中重新声明为private说明外部代码通过子类指针/引用不能直接访问。
总之这两个东西没有关系就对了。
页:
[1]