gpt4 book ai didi

c++ - 在 C++ 中查看对象的未初始化属性

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:44 25 4
gpt4 key购买 nike

嘿伙计们,我想知道控制台会在这个简单的 C++ 代码中显示什么

using namespace std;

class Tier {
public:
string name;
};

int main()
{
Tier Affe;
cout << Affe.name << endl;
}

我来自 C#,知道会抛出“null”错误。但在 C++ 中,控制台什么也不显示。调试时属性为“”。

这是否意味着属性“name”引用了一个空指针?考虑从类“Tier”创建一个对象,将分配具有类大小的内存。因此对象的属性“名称”也将在内存中分配。

那为什么调试器显示“”。在我看来应该是一些随机数据,之前在内存部分......

最佳答案

它会是空的,因为 std::string 的默认构造函数是构造一个空字符串

在这里查看构造函数 1:http://en.cppreference.com/w/cpp/string/basic_string/basic_string

1) Default constructor. Constructs empty string (zero size and unspecified capacity)

因此只有一个空行(换行符来自 std::endl)

如果您稍后要为您的字符串成员赋值

Affe.name = "foo";

然后会发生分配,分配足够的内存来存储 "foo" 和一个 null 终止符。

关于c++ - 在 C++ 中查看对象的未初始化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775059/

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