在 c++ 中,Obj x = Obj(n) 和 Obj x(n) 有什么区别?
What's the difference between Obj x = Obj(n) and Obj x(n) in c++?
我似乎在网上找不到任何关于这两者的区别。几乎每个在线教学源(learncpp.com, cplusplus.com等)似乎都使用Obj x(n);
来初始化Obj x
,但是当我使用Obj x = Obj(n)
时,我的编译器没有抱怨,我看不到任何差异。这真的有区别吗,还是仅仅是一种风格的选择?
使用
Obj x(n);
称为直接初始化。它调用可以接受n
作为参数的构造函数来初始化x
。
Obj x = Obj(n);
称为Copy Initialization。理论上,这将使用n
构造一个临时Obj
,并调用复制构造函数初始化x
。有些编译器能够优化掉临时的。
Obj x(n);
声明x
为Obj
,然后构造它。
Obj x = Obj(n)
声明x
为Obj
,然后将其初始化为临时构造的结果。
第一种情况更快,生成的机器码更少。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 是什么导致了代码中出现"error LNK2005: already defined in .obj"错误?
- 汇编TypeID(OBJ)时会发生什么-C
- C++ push_back(*new obj()) 和 push_back(obj()))有什么区别?
- Object obj = Object() 和 Object obj() 有什么区别?
- 我的旧Qt项目文件(.pro文件),它正在工作;不创建任何文件(moc_ 或 .obj 文件)。为什么它退出构建步骤什么都不做?
- 给定一个dll/exe(带或不带.pdb),我可以看到什么.obj文件有助于它的大小和多少
- 目标 c - obj-c 代表模式的C++等价物是什么?
- 在 c++ 中,Obj x = Obj(n) 和 Obj x(n) 有什么区别?
- "A = Obj()"和"A = new Obj()"有什么区别