首页 > 编程语言 > 详细

C++primer 7.5.3节练习

时间:2017-08-07 21:24:23      阅读:514      评论:0      收藏:0      [点我收藏+]

练习7.43

网上的答案

 1 #include <iostream>
 2 using std::cout;
 3 using std::endl;
 4 
 5 class Nodefault
 6 {
 7 public:
 8     Nodefault(int i)
 9     {
10         val = i;
11     }
12     int val;
13 };
14 
15 class C
16 {
17 public:
18     Nodefault nd;
19     C(int i = 0) : nd(i) { }
20 };
21 
22 int main()
23 {
24     C c;
25     cout<<c.nd.val<<endl;
26     return 0;
27 }

但是觉得不对,对于这样的构造方法不是c的默认构造函数,只是c的构造函数。个人认为缺少NoDefault的默认构造函数的情况下,无法构造c的默认构造函数;

练习7.44

不合法,因为NoDefault类并没有他的默认构造函数,这样的定义最后得到的将是未定义的。

练习7.45

如果C能够构造出默认构造函数,则合法,反之亦然。(但是我觉得c的默认构造函数无法构造)

练习7.46

a错误,因为如果类不提供任何一个构造函数,编译器在其需要时会提供一个合成的默认构造函数;

b错误,如果构造函数为所有参数都提供了默认实参,则他实际上也定义了默认构造函数;

c错误,默认构造函数在理论上来说是必须的;

d错误,如果类包含内置类型或复合类型的成员,则该类不应该依赖于合成的默认构造函数。

C++primer 7.5.3节练习

原文:http://www.cnblogs.com/wuyinfenghappy/p/7301132.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!