我已经了解到构造函数用于在C ++中初始化类的成员变量。在所有示例中,我看到构造函数在调用时初始化类的所有成员变量。
如果我编写的构造函数只初始化一些成员变量或没有成员变量,会发生什么?
答案 0 :(得分:5)
这实际上取决于你拥有的成员变量。如果您提供构造函数并且未在成员初始化列表中显式初始化变量,则它将为default initialized。这适用于每个变量。
现在,默认初始化会根据您拥有的变量执行其他操作。如果你有内置类型,例如int
或bool
,则它不会被初始化为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)
取决于课程和你的课程。在所有情况下,您的课程和程序是否需要所有这些变量。如果你的班级确实需要它们,那么不会发生任何错误或异常,否则你的程序可能会崩溃或其他什么。