C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题
#include "stdafx.h" #include <iostream> #include <algorithm> using namespace std; class Base { public: int num; virtual void func() { cout<<"Do something in Base"<<endl; } }; class Derived:private Base { public: Derived(int i)/*:num(i)*/ //这样不行,在这里是初始化,而num在父类中已经进行了初始化 { num=i; //这样可以,在这里是赋值 } virtual void func() { cout<<"num="<<num<<endl; cout<<"Do something in Derived"<<endl; } public: using Base::num; //恢复访问属性 public: friend void getBasePtr(void); }; void getBasePtr(void) { Base* pb=new Derived(10); <span style="white-space:pre"> </span>//这样就可以啦 pb->func(); } int main() { //Base* pb=new Derived(10); <span style="white-space:pre"> </span>//使用private和protected的继承属性后,不可以这样赋值 //因为Base在Derived中已经是私有部分,不能在此处访问 //所以无法完成转换 getBasePtr(); system("pause"); return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。