首页 > 代码库 > C++primer 7.5.3节练习
C++primer 7.5.3节练习
练习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节练习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。