为什么是字符串 s;将始终导致空字符串

Why is it that string s; will always result in an empty string?

本文关键字:字符串 为什么      更新时间:2023-10-16

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

编写MyClass C;时,编译器会生成调用类MyClass的默认构造函数的代码。"默认构造函数"是可以在没有参数的情况下调用的构造函数,调用它的效果是该构造函数所做的一切。如果让编译器生成默认构造函数,那么,是的,具有内置类型的成员不会被初始化。如果您编写自己的默认构造函数,则可以初始化您认为合适的任何成员。这就是std::string所做的:它设置字符串对象,以便它保存一个空字符串。

class MyClass {
public:
    MyClass() : member(3) {} // default constructor
    int member;
};
MyClass C; // C.member has the value 3