我想知道为什么C++(可能还有其他语言,我不确定)不允许这样的语句.
MyObject foo.DoBar();
Run Code Online (Sandbox Code Playgroud)
你会认为语言可以理解构造对象,然后调用函数.我认为这不起作用的唯一原因是如果对象的构造失败,语句仍然会尝试调用该函数.
那些帮助开发和集成新功能到C++(可能还有其他语言)的人不允许这样做的原因是什么?
sth*_*sth 15
您可以构造一个对象并立即调用它上面的函数,如果您这样做,则无法将该对象分配给变量:
MyObject().DoBar();
Run Code Online (Sandbox Code Playgroud)
这种限制的一个实际原因是构造函数创建了对象,并且您正在调用的函数也可能具有返回值,因此您最终会得到同一语句生成的两个值.然后你需要一些特殊的语法来将这两个值分配给变量,这在其他任何地方都不会发生.
直接调用该方法可能获得的一点点便利并没有那么大的优势,值得为它引入新的语法.
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |