[英]What's the difference between these constructors?
我想知道这两个构造函数之间的区别:
List<type*> list = List<type*>();
和
List<type*> list;
容器List是由我编写的,并且具有一个不带参数的用户定义的构造函数。
我认为第一行是正确的,第二行看起来像Java。 但是,两者都可以编译。 那么,这两个语句之间有什么区别?
第一个需要可访问的副本或移动构造函数,而第二个则不需要。
例如考虑这个解梦程序。 如果您不使用MS VC ++,则该程序将无法编译。
#include <iostream>
class A
{
public:
A() {}
private:
A( const A& ) { std::cout << "A( const A & )" << std::endl; }
};
int main()
{
A a = A();
}
因为即使无法执行复制操作,也无法访问复制构造函数。
同样使用第一个提供相应的对象将被值初始化,而使用第二个提供相应的对象将被默认初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.