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"创建对象,将分配具有类大小的内存.因此,对象的属性"名称"也将在内存中分配.
为什么调试器会显示"".在我的意见中应该是一些随机数据,这是在之前的内存部分......
它将为空,因为默认构造函数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"并分配空终止符.