C++问题求解!!
答案:2 悬赏:20
解决时间 2021-02-14 00:21
- 提问者网友:却不属于对方
- 2021-02-13 16:08
C++问题求解!!
最佳答案
- 二级知识专家网友:行路难
- 2021-02-13 17:16
答案是正确的,分析结果如下:首先搞清楚Base1(int i, int j=0) : Base(j)还有Base2(int i, int j=0) : Base(j) 还有Derived(int a, int b, int c, int d) :mem1(a), mem2(b), Base1(c),
Base2(d), Base(a) 都是成员初始化列表,而且由题中的继承可知,当创建Derived对象时,会调用三次Base,分别是1,0,0。
首先要清楚的是成员列表初始化时,是按照类中定义的顺序来进行初始化的,这是规则。因此题中首先是初始化Base2对象,这首先要先调用基类Base,由Base(a),知输出1,然后是调用Base2(d),输出4,然后是Base1(c),输出3,然后初始化men2(b),因为有默认形参,先调用Base(0)(0值是有Base1(int i, int j=0) : Base(j)得到的,j默认为0),输出0,然后输出2,men1(a),的过程也一样。输出0,1,最后输出2,解释的比较啰嗦,希望能帮助你
打字不易,如满意,望采纳。
Base2(d), Base(a) 都是成员初始化列表,而且由题中的继承可知,当创建Derived对象时,会调用三次Base,分别是1,0,0。
首先要清楚的是成员列表初始化时,是按照类中定义的顺序来进行初始化的,这是规则。因此题中首先是初始化Base2对象,这首先要先调用基类Base,由Base(a),知输出1,然后是调用Base2(d),输出4,然后是Base1(c),输出3,然后初始化men2(b),因为有默认形参,先调用Base(0)(0值是有Base1(int i, int j=0) : Base(j)得到的,j默认为0),输出0,然后输出2,men1(a),的过程也一样。输出0,1,最后输出2,解释的比较啰嗦,希望能帮助你
打字不易,如满意,望采纳。
全部回答
- 1楼网友:野慌
- 2021-02-13 17:47
内类变量只有static const 的整型才可以初始化。不能初始化float型的。要用PI可以定义宏
#define PI 3.1415926535
或者不要在这里初始化。在实现中初始化。
追问:所以我就不要在这里写,然后在.cpp文件里用define就好了吗?
追答:不是,你就在.h文件中用define。如果用static const,那就要在cpp文件里初始化了。
#define PI 3.1415926535
或者不要在这里初始化。在实现中初始化。
追问:所以我就不要在这里写,然后在.cpp文件里用define就好了吗?
追答:不是,你就在.h文件中用define。如果用static const,那就要在cpp文件里初始化了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯