C ++中的继承机制是一种奇怪的初始化列表形式?

时间:2013-06-03 02:40:34

标签: c++

在无数次输入代码片段的同时,我有一个洞察力,我不确定是否完全正确,因此我的问题在这里

守则

template <class T> class ListNode:public Node {

public:
  T_val;
  ListNode (T val);

}

问题

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

1 个答案:

答案 0 :(得分:3)

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

这种多用途在C ++中发生了很多。例如。考虑在函数声明/定义和函数调用中使用的parentesis ()对。或者成对的花括号{}用于定义范围块(命名空间,类,函数,功能级以下的范围)和初始化对象(C ++ 11中的统一初始化,C ++ 98中的聚合初始化) 03)。其他示例包括&(“地址”和“二进制和”运算符与参考声明),deletedelete运算符和operator delete与已删除函数)和<等(模板与复制操作员)