#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;
}
C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题
最新推荐文章于 2024-03-30 11:33:37 发布