这可能很琐碎,但我无法正确命名,因此找不到答案。
在1和2的性能方面有什么显着差异吗?
class Object {
int number_;
Object(int number) : number_(number) {}
};
// then, in main.
Object* objPtr1 = new Object(11) // nr.1
Object* objPtr2 {new Object{11}} // nr.2
据我了解,2的唯一好处是objPtr2
是用动态创建的对象的地址直接初始化的,
因此不复制。
另一方面,objPtr1
正在复制初始化,这意味着:
new
返回新创建对象的地址,objPtr1
。此过程涉及不必要的复制,可以通过直接初始化将其忽略(如2中所示)。如果我的理解是正确的,那么在2上使用2是否对性能有很大的影响?