string s{foo()};
的意思很明确,就是成员变量s,用foo()来初始化。
(这个就是初始化,学名叫默认初始化。它可以调用动态函数的,所以不是一个简单的“默认值”)
string s(foo());
是可以被理解成一个函数的,返回值是string,参数是一个函数F。这个F的返回值是foo,没有参数。
这个就是为什么默认初始化要用{}而不能用()
【 在 confinement (禁闭) 的大作中提到: 】
: 标 题: Re: 没搞明白 {} 初始化
: 发信站: 水木社区 (Tue Jul 27 08:56:49 2021), 站内
:
: 意思是从符号上()是函数调用,但是在一些场合可存在歧义,不确定是调用构造函数来定义一个变量,还是声明一个新函数? 从你的举例好像是可能有这么个问题,不过这个例子里不可能是声明一个函数吧
:
: 【 在 here080 的大作中提到: 】
: : 你倒是说说看这两个写法分别是什么意思?
: : struct A {
: : string s(foo());
: : ...................
:
: --
: ※ 修改:·confinement 于 Jul 27 08:57:24 2021 修改本文·[FROM: 14.155.18.*]
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 14.155.18.*]
--
修改:confinement FROM 14.155.18.*
FROM 76.126.252.*