首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"MyClass mc = MyClass()“还是"MyClass mc"?

"MyClass mc = MyClass()“还是"MyClass mc"?
EN

Stack Overflow用户
提问于 2012-08-14 19:32:33
回答 5查看 262关注 0票数 4

它们之间的区别是什么

代码语言:javascript
复制
MyClass mc = MyClass();

代码语言:javascript
复制
MyClass mc;

在C++?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-14 19:36:56

第一个调用复制构造函数,将临时对象作为参数- MyClass()创建临时对象。

第二个调用默认构造函数。

实际上,在大多数情况下,它们被优化为相同的代码,但这是语义上的区别。

正如内格尔提到的,这种情况与POD类型略有不同;当"MyClass“为POD时,第二个代码段不会对mc进行值初始化,而第一个代码段将对其进行值初始化。

票数 8
EN

Stack Overflow用户

发布于 2012-08-14 19:37:18

第一个是复制初始化,第二个是默认初始化。

例如,以下代码将无法编译:

代码语言:javascript
复制
class MyC
{
public:
MyC(){}
private:
MyC(const MyC&) {}
};

int main()
{
  MyC myc = MyC();
  return 0;
}
票数 2
EN

Stack Overflow用户

发布于 2012-08-14 19:34:06

自定义复制构造函数和默认构造函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11951365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档