1

在无数次输入代码片段时,我灵光一现,我不确定这是否完全正确,因此我的问题在这里

编码

template <class T> class ListNode:public Node {

public:
  T_val;
  ListNode (T val);

}

问题

class ListNode : public Node一种将对象的公共部分初始化为父对象的公共部分的初始化列表吗?

4

1 回答 1

3

不,这不对。对象的初始化发生在构造函数中,而不是在类定义期间。这只是简单的继承,这个概念仅适用于类,不适用于对象。类确实只存在于编译时,而不是运行时,因此不能进行初始化。定义继承的语法使用冒号:以及在构造函数中定义初始化列表的语法并不意味着存在关联。这只是在两种情况下使用相同的字符,它们的区别足以避免混淆,至少通常是这样;-)

这种多次使用在 C++ 中经常发生。例如,考虑在函数声明/定义和函数调用()中都使用的一对双亲。或者成对的花括号用于定义范围块(命名空间、类、函数、函数级别以下的范围)和初始化对象(C++11 中的统一初始化,C++98/03 中的聚合初始化)。其他示例是(“地址”和“二进制和”运算符与引用声明),(运算符和与删除函数)等(模板与比较运算符){}&deletedeleteoperator delete<

于 2013-06-03T06:26:52.800 回答