几道c++题目,我觉得答案给的有些问题,希望高手不吝赐教,非常感谢

判断正误1.若虚基类由非虚基类派生而来,则仍先调用基类构造函数,再调用派生类的构造函数。(正确)(这句话不是与“虚基类的构造函数在非虚基类之前调用”矛盾了么?)2.基类中... 判断 正误
1.若虚基类由非虚基类派生而来,则仍先调用基类构造函数,再调用派生类的构造函数。(正确)
(这句话不是与“虚基类的构造函数在非虚基类之前调用”矛盾了么?)

2.基类中说明的纯虚函数在其任何派生类中都必须实现。(正确)
(如果A派生出B,B派生出C,那么A中的纯虚函数能不能在B中不实现,而只在C中实现?)

3.设int a=1,b=2,表达式(a++)+b和a+++b的值分别是 ( 3,3 )
(第一个表达式有小括号,为什么值不是4?)
展开
 我来答
发狂的蜜蜂
2011-08-12 · TA获得超过891个赞
知道小有建树答主
回答量:983
采纳率:0%
帮助的人:851万
展开全部
1.别自己把自己搞糊涂了。只记住一条:基类构造函数肯定要再派生类前面调用就行了。这个关系是基本准则,其他一切都是根据这个来的。
2.如果A派生出B,B派生出C,那么A中的纯虚函数能不能在B中不实现,而只在C中实现?
这看你要怎么用了。如果你不准备实例化B,当然是可以的。如果你要实例化B,必须在B中实现。
这句话不严谨。如果派生类不准备实例化,当然不需要实现。就像你举的例子中的B一样。
3.(a++)+b 这个和a+++b 的值,说实话,这样的讨论真的没意义,完全看编译器怎么做。VS2008中,(a++)+b =3.编译器等这句话执行完了以后才将a赋值为2.如果这样写严重奇异,代码基本没法看。如果是想结果等于3,而a执行后等于2.应该这样写:a+b;a++;明确写2行。
a+++b,同理。这句话等于这么写:a+b;++b;
如果你想结果等于4(第一个),那么就明确这么写:a++;a+b.不要搞那种没有任何意义的简写。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式