调用构造函数并初始化

Calling the constructor and initializing

本文关键字:初始化 构造函数 调用      更新时间:2023-10-16

这两种方法的主要区别是什么?为什么第二种方法在这种情况下不起作用?

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&类型。如果是这种情况,那么请记住引用必须初始化,并且它们不能被反弹到不同的对象。使用初始化列表是正确初始化作为对象数据成员的引用的唯一方法;不能在构造函数中使用赋值来初始化它们。(实际上,如果省略初始化列表项,就会得到类似于"未初始化引用成员"的错误)

nextvalue可能没有空的默认构造函数。

除此之外,const和reference成员必须在初始化列表中初始化,不能对其进行赋值。