gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:44:49 24 4
gpt4 key购买 nike

我想知道这两个构造函数有什么区别:

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();
}

因为即使可以省略复制操作,复制构造函数也是不可访问的。

同样使用第一个提供相应的对象将被值初始化,而使用第二个提供相应的对象将被默认初始化。

关于c++ - 这些构造函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35454320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com