繁体   English   中英

这些构造函数有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM