我目前正在研究一些相当古老的 C++ 代码,经常发现类似的东西
int i;
i = 42;
or
Object* someObject = NULL;
someObject = new Object();
or even
Object someObject;
someObject = getTheObject();
我完全理解这段代码的作用,但我真的不知道这种变量定义和初始化的分离何时会有帮助。我搜索了一些解释,但最终总是得到成员初始化列表或何时应该定义局部变量的问题。
最后,我不明白为什么有人会故意编写这段代码。它只是将定义和初始化分成两行并产生开销 - 在最后一种情况下,它使用默认构造函数创建一个对象,然后在下一行中销毁它。
我想知道我是否应该简单地将代码更改为
int i = 42;
Object* someObject = new Object();
Object someObject = getTheObject();
这会导致任何问题吗?
Object someObject;
someObject = getTheObject();
这使用了赋值运算符。
Object someObject = getTheObject();
这使用了复制构造函数。
除此之外,您建议的更改是等效的,您应该实施它们。复制向量/赋值运算符的区别是expected为了产生相同的结果,但这不是由语言强制执行的。
我认为没有像原始代码那样分割声明和赋值的有效理由 - 即使出于所有实际目的,它不会引入开销(对象除外)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)