我目前对以下语句感到困惑 - 虽然这个语句在编译期间会产生错误,但事实并非如此.
// statement 1:
someclass* q(someclass());
Run Code Online (Sandbox Code Playgroud)
我理解这句话是否是这样的
// statement 2:
someclass* q(&someclass());
Run Code Online (Sandbox Code Playgroud)
我想知道为什么语句1不会产生错误,或者即使它有效(我在幕后有什么遗漏?)
And*_*owl 12
我想知道为什么语句1不会产生错误,或者即使它是有效的
第一个语句是有效的,虽然它可能没有达到你的期望:这个语句声明一个名为的函数q,它返回一个指向类型对象的指针,someclass并输入一个函数,该函数又不接受任何参数并返回一个类型的对象someclass.这被称为最令人烦恼的解析.
第二个语句无效:它试图声明一个名为q类型对象的someclass指针,并将该指针初始化为该someclass()表达式构造的对象的地址.但是,请注意,这someclass()是暂时的,并且取一个临时的地址是非法的.
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |