为什么可以用C++写字符串 s = "xxx" 这样的表达式?

Why can write expressions like string s = "xxx" in C++?

本文关键字:xxx 表达式 C++ 字符串 为什么      更新时间:2023-10-16

我经常看到:

string str = "123";

我的问题是,如果string是一个类类型,为什么我们可以直接设置它等于"123",而不是使用new或直接初始化它?

我习惯看到像

这样的东西
classType *pt = new classType;
classType pt = classType();

classType s = value;

c++字符串类型有一个隐式转换构造函数,它接受const char *作为输入。因此,使用C风格的字符串初始化c++字符串是合法的,因为c++会将其解释为对隐式转换构造函数的调用。

在本例中,代码

string str = "123";

等价于

string str("123");

,更显式地看起来像一个构造函数调用。

请注意,很少看到像

这样的内容
classType p = classType();

更合适的表达方式是直接写

classType p;

,隐式调用默认的无参数构造函数。

希望这对你有帮助!