首页 > 代码库 > C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题
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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。