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

问个简单有关问题

2012-02-08 
问个简单问题!22.类B是通过public继承方式从类A派生而来的,且类A和类B都有完整的实现代码,那么下列说法正

问个简单问题!
22.类B是通过public继承方式从类A派生而来的,且类A和类B都有完整的实现代码,那么下列说法正确的是:
A.类B中具有public可访问性的成员函数个数一定不少于类A中public成员函数的个数
B.一个类B的实例对象占用的内存空间一定不少于一个类A的实例对象占用的内存空间
C.只要类B中的构造函数都是public的,在main函数中就可以创建类B的实例对象
D.类A和类B中的同名虚函数的返回值类型必须完全一致


  哪位能解释下各个选项.


[解决办法]
自己写点代码来试。
另外,去看《深度探索C++对象模型》
[解决办法]
首先,同意楼上的

下边逐条解释一下:
A.类B中具有public可访问性的成员函数个数一定不少于类A中public成员函数的个数
类B可以通过命名同样名字的函数来隐藏类A的public函数,所以这条不正确。

B.一个类B的实例对象占用的内存空间一定不少于一个类A的实例对象占用的内存空间
这条是正确的

C.只要类B中的构造函数都是public的,在main函数中就可以创建类B的实例对象
这条应该是错误的吧,待会再验证一下

D.类A和类B中的同名虚函数的返回值类型必须完全一致
这条是错误的,其实返回值可以是协类型
[解决办法]
类B可以通过命名同样名字的函数来隐藏类A的public函数,所以这条不正确。
------
子类不能缩小父类函数的可见性,
这么解释不对吧
[解决办法]
呵呵,b.A::foo();

热点排行