【问题标题】:c++: instantiate object [duplicate]c ++:实例化对象[重复]
【发布时间】:2012-08-17 10:29:44
【问题描述】:

可能重复:
C++ Object Instantiation vs Assignment

我对 C++ 很陌生,想知道将对象实例化为之间有什么区别(如果有的话)

int main () {
  vector< int > x(2);
}

int main () {    
  vector< int > x = vector< int > (2); 
}

除了后者需要更长的时间来编写。提前致谢!

【问题讨论】:

  • @Tolga:我认为该评论在几个方面具有误导性和误导性......

标签: c++ object instantiation


【解决方案1】:

区别主要在于语法:

  • vector&lt;int&gt; x(2);直接初始化

  • vector&lt;int&gt; x = vector&lt;int&gt;(2);复制初始化

后者正式要求类具有可访问的副本构造函数,但实际上副本将被省略,并且两个版本生成完全相同的代码。

您应该始终喜欢直接初始化。

你也可以发疯:

  • vector&lt;int&gt; x = vector&lt;int&gt;(vector&lt;int&gt;(vector&lt;int&gt;(2)));

【讨论】:

  • +1 在那里为我禁食。可能会添加应添加直接初始化以防止调用无法省略的复制构造函数。
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 2016-03-28
  • 2018-06-13
  • 2016-04-01
  • 1970-01-01
相关资源
最近更新 更多