C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题

来源:互联网 发布:中国核弹数量知乎 编辑:程序博客网 时间:2024/06/02 18:23
#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);//这样就可以啦pb->func();}int main(){//Base* pb=new Derived(10);//使用private和protected的继承属性后,不可以这样赋值//因为Base在Derived中已经是私有部分,不能在此处访问//所以无法完成转换getBasePtr();system("pause");return 0;}
0 0
原创粉丝点击