读书人

派生指针,该怎么解决

发布时间: 2012-04-27 11:57:44 作者: rapoo

派生指针

C/C++ code
class BASE{public:        BASE(): aa(293) {}        virtual void print() {cout<<"Hello\n";}        virtual void set() {aa = 103;}        int aa;};class Derived : private BASE  //换成protected也一样{public:        //Derived(): BASE(103) {}        BASE* pr(Derived* d)        {             return d;        }        void set(){aa=39;}        void print(){;cout<<"World\n" << this->aa << endl;}};int main(){//BASE *p = new Derived;//为什么派生类的指针不能给基类Derived dd;BASE *p = dd.pr(new Derived); //这样就行,原先我理解。private继承,基类中的所有成员在派生类中为private访问//编译器拒绝将 派生类的指针转换到基类。。是为了防止,用户调用在派生类中 已经是private基类的成员。。//难道这不是派生类指针?p->print();cout << p->aa << endl;p->set();cout << p->aa;}


[解决办法]
http://hi.baidu.com/wchwho/blog/item/3e6494abb0ed3aaecb130c3e.html
[解决办法]
帮顶,等 evencoming 的答案。。。
[解决办法]
探讨
http://hi.baidu.com/wchwho/blog/item/3e6494abb0ed3aaecb130c3e.html

[解决办法]
引用:
不管是什么继承,子类中都可以访问父类中所有public和protected的成员。
private继承只是表明继承关系是private的,而不表明所有成员的访问权限也是private的,这完全是两码事。
讲得通俗点,private继承是指“外界”不知道那个类还有个父类,而不是子类自己也不知道他有个父类。就像私有成员一样,外界不知道类有私有成员,不代表类自己也不了解自己的私有成员。

读书人网 >C++

热点推荐