gpt4 book ai didi

c++ - 如果我不明确地初始化,C++ 类成员如何初始化?

转载 作者:IT老高 更新时间:2023-10-28 11:33:08 24 4
gpt4 key购买 nike

假设我有一个包含私有(private)成员的类 ptrnamepnamername crnameage。如果我不自己初始化它们会怎样?这是一个例子:

class Example {
private:
int *ptr;
string name;
string *pname;
string &rname;
const string &crname;
int age;

public:
Example() {}
};

然后我做:

int main() {
Example ex;
}

ex 中的成员是如何初始化的?指针会发生什么? stringint 是否使用默认构造函数 string()int() 进行 0 初始化?引用成员呢?还有 const 引用呢?

我想学习它,以便编写更好(无错误)的程序。任何反馈都会有所帮助!

最佳答案

代替显式初始化,类中成员的初始化与函数中局部变量的初始化相同。

对于对象,调用它们的默认构造函数。例如,对于 std::string,默认构造函数将其设置为空字符串。如果对象的类没有默认构造函数,如果不显式初始化就会出现编译错误。

对于原始类型(指针、整数等),它们初始化——它们包含之前碰巧出现在该内存位置的任意垃圾。 p>

对于references(例如std::string&),不初始化它们是非法,你的编译器会提示并拒绝编译这样的代码。必须始终初始化引用。

因此,在您的具体情况下,如果它们没有显式初始化:

    int *ptr;  // Contains junk
string name; // Empty string
string *pname; // Contains junk
string &rname; // Compile error
const string &crname; // Compile error
int age; // Contains junk

关于c++ - 如果我不明确地初始化,C++ 类成员如何初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3127454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com