为什么是字符串s;总是会产生一个空字符串?

时间:2017-05-24 10:21:47

标签: c++

根据许多参考资料,当你写Myclass C时;它将使用默认的ctor,它不进行任何初始化,因此应该将C的成员保留为垃圾。那么为什么STL类是值初始化的呢?

1 个答案:

答案 0 :(得分:2)

当您编写MyClass C;时,编译器会生成调用类MyClass的默认构造函数的代码。 “默认构造函数”是可以不带参数调用的构造函数,调用它的效果就是构造函数的作用。如果将它留给编译器生成默认构造函数,那么,是的,具有内置类型的成员不会被初始化。如果您编写自己的默认构造函数,则可以初始化您认为合适的成员。这就是std::string的作用:它设置字符串对象,使其保持空字符串。

class MyClass {
public:
    MyClass() : member(3) {} // default constructor
    int member;
};

MyClass C; // C.member has the value 3