构造函数的构造操作
编译器何时会为一个类合成默认构造函数? 答:当编译器需要的时候。
有以下四种情况:
- 带有默认构造函数的类对象
以下代码为例:
class Foo {public: Foo();}
class Bar {public: Foo foo; int a;}
Bar类内含一个带有默认构造函数的foo对象,故编译器会为其合成默认构造函数。但该构造函数仅仅构造foo,而不会对a做任何操作。这体现了被合成的默认构造函数只会满足编译器的需要,而不是程序的需要。为了满足程序的逻辑正确,必须由程序员提供合适的构造函数。