构造函数是否必须在C ++中初始化成员变量?

时间:2018-01-20 11:12:20

标签: c++

我已经了解到构造函数用于在C ++中初始化类的成员变量。在所有示例中,我看到构造函数在调用时初始化类的所有成员变量。

如果我编写的构造函数只初始化一些成员变量或没有成员变量,会发生什么?

4 个答案:

答案 0 :(得分:5)

这实际上取决于你拥有的成员变量。如果您提供构造函数并且未在成员初始化列表中显式初始化变量,则它将为default initialized。这适用于每个变量。

现在,默认初始化会根据您拥有的变量执行其他操作。如果你有内置类型,例如intbool,则它不会被初始化为0或任何其他值,就像你有:

int value; // it has an indeterminate value

这也适用于数组。如果它是另一个类,那么将调用该类的默认构造函数,就像你有:

一样
struct Foo { /*something*/ };
Foo value; // calls default constructor, i.e. initializes object

答案 1 :(得分:2)

没关系..你也可以在你的成员函数中初始化你的成员变量,然后,只需在构造函数中调用函数..重要的是不要忘记在使用它们之前初始化变量..

简而言之。只要在使用它们之前在类中的某个位置初始化它们,就可以不在构造函数中初始化成员变量。

答案 2 :(得分:1)

你被允许这样做。这不是很好的做法,因为你会有一系列未经初始化的成员变量,可能会产生意想不到的结果

答案 3 :(得分:1)

取决于课程和你的课程。在所有情况下,您的课程和程序是否需要所有这些变量。如果你的班级确实需要它们,那么不会发生任何错误或异常,否则你的程序可能会崩溃或其他什么。