C++中的继承机制初始化器列表的一种奇怪形式
inheritance mechanism in C++ a weird form of initializer list?
当我第无数次输入代码片段时,我有了一个闪光点,我不确定这是真的,因此我在这里的问题
代码
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
与删除的函数(和<
等(模板与共有运算符(
相关文章:
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 有没有一种方法可以在编译时获得作用域类名
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 一种在C++中读取TXT配置文件的简单方法
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 在调用接收数组的方法时,模板化数组大小是不是一种糟糕的做法
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 将错误返回给调用方而不是立即在 C++ 中抛出错误是否是一种好的做法
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- 在运行时检查继承是否只有一种类型和 void*
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- c++ const函数形参.有没有一种方法可以只声明函数的单个签名?
- c++ 03:是否有一种方法可以使一个类型每次被包含在模板形参中时都会编译成不同的类型?