这些构造函数之间有什么区别?
What's the difference between these constructors?
我想知道这两个构造函数之间有什么区别:
List<type*> list = List<type*>();
和
List<type*> 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();
}
因为复制构造函数是不可访问的,否则可以省略复制操作。
同样使用第一个提供相应的对象将被值初始化,而使用第二个提供相应的对象将被默认初始化。
相关文章:
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- Qt:remove() 和 rmdir() 有什么区别
- 这 4 个 lambda 表达式之间有什么区别?
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- typedef 枚举和枚举类有什么区别?
- &C::c 和 &(C::c) 有什么区别?
- ascii 和 unicode 在处理级别有什么区别吗?
- C 中的常量限定符和 C++ 中的常量限定符有什么区别?
- "ABC" 和 "ABC" ) 在C++中有什么区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 引用捕获和在 lambda 中通过引用发送参数有什么区别 (C++)
- 两种访问I2C总线的方法有什么区别?
- 两种模板示例有什么区别?
- 这两种C++语法之间有什么区别?
- lua 5.0.2 模块和 5.3.5 有什么区别?
- C++中"typedef"、"using"、"namespace"和"using namespace"有什么区别?
- std::enable_if 和 std::enable_if_t 有什么区别?