你没有搞明白小括号和花括号的区别。
对于初始化来说,小括号初始化是调用构造函数来初始化。花括号是直接初始化,不需要经过构造函数。
具体到你的例子
string str("abc")。正常可以这样使用,比如你定义一个局部变量,它查找string的对应使用构造函数,然后调用。但是作为类成员变量时,你要在声明调用一个一个构造函数是不行的,你需要在类初始化调用。所以可以改成
A():str("abc")
而string str{"abc"}是直接初始化,不需要调用构造函数,所以可以使用。
【 在 confinement 的大作中提到: 】
: 意思是从符号上()是函数调用,但是在一些场合可存在歧义,不确定是调用构造函数来定义一个变量,还是声明一个新函数? 从你的举例好像是可能有这么个问题,不过这个例子里不可能是声明一个函数吧
:
: 【 在 here080 的大作中提到: 】
: ...................
--来自微水木3.5.11
--
FROM 140.206.195.*