这一章详细的讨论了 constructor 如何工作,讨论构造一个对象的过程以及构造一个对象给程序带来的影响。
区分 trivial 和 notrivial
- 只有编译器需要的时候(为什么会需要?后面讲的很清楚),合成操作才是 nontrivial 的, 这样的构造函数才会被真正的合成出来;
- 如果编译器不需要,而程序员又没有提供,这时的默认构造函数就是 trivial 的。虽然它在概念上存在,但是编译器实际上根本不会去合成出来,因为他不做任何没有意义的事情,所以当然可以忽略它不去合成。trivial 的函数只存在于概念上,实际上不存在这个函数。