我已经了解到,构造函数用于初始化C++中类的成员变量。在所有示例中,我已经看到构造函数在调用类时初始化类的所有成员变量。
如果我编写的构造函数只初始化部分成员变量或不初始化成员变量,会发生什么?
发布于 2018-01-20 11:17:47
这取决于您拥有哪些成员变量。如果您提供了一个构造函数,并且没有显式地初始化成员初始化列表中的变量,那么它将是http://en.cppreference.com/w/cpp/language/default_initialization。这是针对每个变量的。
现在,默认初始化会根据您拥有的变量执行其他一些操作。如果您有一个内置类型,如int或bool,那么它将不会初始化为0或任何其他值,就像您有:
int value; // it has an indeterminate value这也适用于数组。如果它是另一个类,那么将调用该类的默认构造函数,就像您有:
struct Foo { /*something*/ };
Foo value; // calls default constructor, i.e. initializes object发布于 2018-01-20 11:19:15
很好..。还可以在成员函数中初始化成员变量,然后,只需在构造函数中调用该函数。重要的是不要忘记在使用变量之前初始化它们。
总之..。在构造函数中不初始化成员变量是很好的,只要在使用它们之前先在类中的某个地方初始化它们。
发布于 2018-01-20 11:15:04
你被允许这么做。但这并不是很好的实践,因为您将有一系列未初始化的成员变量,这些变量可能会产生意想不到的结果
https://stackoverflow.com/questions/48355424
复制相似问题