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

inheritance mechanism in C++ a weird form of initializer list?

本文关键字:一种 怪形 列表 继承 机制 初始化 C++      更新时间:2023-10-16

当我第无数次输入代码片段时,我有了一个闪光点,我不确定这是真的,因此我在这里的问题

代码

template <class T> class ListNode:public Node {
public:
  T_val;
  ListNode (T val);
}

问题

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

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

这种多重使用在C++中经常发生。例如,考虑在函数声明/定义和函数call中都使用的父子关系对()。或者使用成对的大括号{}来定义作用域块(命名空间、类、函数、函数级以下的作用域(和初始化对象(C++11中的统一初始化,C++98/03中的聚合初始化(。其他示例包括&("地址"answers"二进制和"运算符与引用声明(、delete(delete运算符和operator delete与删除的函数(和<等(模板与共有运算符(

相关文章: