首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

基类的(引用/指针)真的能指向派生类对象吗?该如何处理

2012-03-24 
基类的(引用/指针)真的能指向派生类对象吗?[color#FF6600]基类的(引用/指针)真的能指向派生类对象吗?此指

基类的(引用/指针)真的能指向派生类对象吗?
[color=#FF6600]基类的(引用/指针)真的能指向派生类对象吗?

此指针仅能调用基类的方法?

如果是真的。

C/C++ code
class a1{};class a2: public a1{    };class a3 : protected a1{    };class a4:private a1{    };a1 obj1; a2 obj2;a3 obj3;a4 obj4;a1& ref1 = obj1;//obj1 即a1 对象无需转换a1& ref2 = obj2;//public继承 支持 隐式向上类型转换 (基类指针引用可指向派生类)//如果是真的,下列两行就不会报错啊。 a1& ref3 = obj3;//书上说 protected继承 支持 隐式向上类型转换 [b](仅派生类中) --->>>>这个仅派生类是啥意思??? [/b]a1& ref4=obj4;//……………… 不支持。
[/color]

[解决办法]
基类指针可以指向派生类的对象,不过得是公有继承。因为私有和保护继承中,基类中的成员是不能被派生类调用的,而基类的指针是可以指向私有成员的,就会出现错误了
[解决办法]
因为你的a3和a4不是公有继承(public),而是私有(private)和保护(protect)的。而基类中的非公有成员是不能在该类类之外进行调用的。如果你想调用类中的私有成员的话,可以在该类中构建一个调用该私有成员的公共接口函数,然后在该类之外调用该共有函数来对私有成员进行访问。或者直接用建立该类的引用,例如a3& ref3 = obj3;a4& ref4 = obj4; 这样就不会又错了···
[解决办法]
关于你这个呢,就是传说中的动态绑定咯
[解决办法]
这个还要看派生的方式···

热点排行