#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;
}C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题,布布扣,bubuko.com
C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题
原文:http://blog.csdn.net/cjc211322/article/details/38543155