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