调用构造函数并初始化
Calling the constructor and initializing
这两种方法的主要区别是什么?为什么第二种方法在这种情况下不起作用?
template <class T> MyStack<T>::Node::Node(T& input, Node* head):next(head),value(input) {}
template <class T> MyStack<T>::Node::Node(T& input, Node* head) {next = head; value = input;}
我猜为什么第二个不工作,是因为它没有什么分配变量初始化时。
MyStack<T>::value
看起来像T&
类型。如果是这种情况,那么请记住引用必须初始化,并且它们不能被反弹到不同的对象。使用初始化列表是正确初始化作为对象数据成员的引用的唯一方法;不能在构造函数中使用赋值来初始化它们。(实际上,如果省略初始化列表项,就会得到类似于"未初始化引用成员"的错误)
next
和value
可能没有空的默认构造函数。
除此之外,const和reference成员必须在初始化列表中初始化,不能对其进行赋值。
相关文章:
- 为什么std::vector和std::valarray初始化构造函数不同
- 初始化构造函数C++中结构的向量
- C++ 中常量属性的初始化构造函数错误
- 不正确的输出和变量未用Eclipse CDT初始化构造函数
- 如何使用嵌套初始化构造函数中的一维向量初始化矩阵
- 如何通过参数初始化构造函数中的数组?
- 是否有理由使用 malloc 初始化构造函数中的指针
- 如何在 c++ 中初始化构造函数中的二维数组
- 为什么初始化构造函数列表参数时会发生异常?
- 无法初始化构造函数
- 初始化构造函数的默认参数的优选方法是什么?
- 在C++17中使用空列表初始化构造函数时发生编译错误
- C++ 初始化构造函数初始化列表中的嵌套结构?
- 初始化构造函数c++中的向量
- g++ (GCC) 4.6.0 我有以下类,我正在尝试初始化构造函数的结构成员初始化列表
- 使用字符串文本初始化构造函数中的 std::array<char,x> 成员。海湾合作委员会错误?
- 初始化构造函数C++中函数的成员指针
- 在c++中初始化构造函数中的静态成员变量时出错
- memset()初始化构造函数中的对象
- 初始化构造函数C++中的成员向量