在c ++中查看Object的未初始化属性

Pep*_*lee 1 c++ properties class

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

using namespace std;

class Tier {
public:
    string name;
};

int main()
{
    Tier Affe;
    cout << Affe.name << endl;
}
Run Code Online (Sandbox Code Playgroud)

我来自C#并且知道会抛出"null"-Error.但在C++中,控制台没有显示任何内容.调试属性时是"".

这是否意味着属性"name"引用了nullpointer?考虑从类"Tier"创建对象,将分配具有类大小的内存.因此,对象的属性"名称"也将在内存中分配.

为什么调试器会显示"".在我的意见中应该是一些随机数据,这是在之前的内存部分......

Ste*_*mer 5

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

请参阅构造函数1:http://en.cppreference.com/w/cpp/string/basic_string/basic_string

1)默认构造函数.构造空字符串(零大小和未指定的容量)

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

如果您稍后为字符串成员分配值

Affe.name = "foo";
Run Code Online (Sandbox Code Playgroud)

然后将发生分配,存储足够的内存"foo"并分配空终止符.