我经常看到:
string str = "123";
我的问题是string
是否为类类型,为什么我们可以直接将其设置为"123"
而不是使用new
或直接初始化它?
我习惯看到像
这样的东西classType *pt = new classType;
classType pt = classType();
不是
classType s = value;
答案 0 :(得分:9)
C ++字符串类型有一个隐式转换构造函数,它接受const char *
作为输入。因此,使用C样式字符串初始化C ++字符串是合法的,因为C ++会将其解释为对隐式转换构造函数的调用。
在这种情况下,代码
string str = "123";
相当于
string str("123");
更明确地看起来像构造函数调用。
请注意,很难看到像
这样的内容classType p = classType();
更恰当的说法就是写
classType p;
隐式调用默认的无参数构造函数。
希望这有帮助!