在无数次输入代码片段的同时,我有一个洞察力,我不确定是否完全正确,因此我的问题在这里
守则
template <class T> class ListNode:public Node {
public:
T_val;
ListNode (T val);
}
问题
class ListNode : public Node
是一种初始化列表,它将对象的公共部分初始化为父对象的公共部分吗?
答案 0 :(得分:3)
不,不是。对象的初始化发生在构造函数中,而不是在类定义期间。这只是普通继承,这个概念仅适用于类,而不适用于对象。类只在编译时存在,而不是在运行时存在,因此不能进行初始化。定义继承的语法使用冒号:
以及在构造函数中定义初始化列表的语法,并不意味着存在一个连接。它只是在两种情况下使用相同的字符,足以避免混淆,至少通常;-)
这种多用途在C ++中发生了很多。例如。考虑在函数声明/定义和函数调用中使用的parentesis ()
对。或者成对的花括号{}
用于定义范围块(命名空间,类,函数,功能级以下的范围)和初始化对象(C ++ 11中的统一初始化,C ++ 98中的聚合初始化) 03)。其他示例包括&
(“地址”和“二进制和”运算符与参考声明),delete
(delete
运算符和operator delete
与已删除函数)和<
等(模板与复制操作员)