<sizeof(T)> 作为 C++ 中继承的类模板参数
<sizeof(T)> as inherited class template parameter in c++
我一直在尝试从用C编写的简单自制游戏引擎过渡到c++,并遇到Mike McShaffry的一本好书(游戏邦注:《game Coding Complete》)。出于对bios全能的热爱,我无法理解他的"可选模板类",即这段代码:
class optional_empty { };
template <unsigned long size>
class optional_base
{
public:
// some code here
};
template <class T>
class optional : public optional_base<sizeof(T)>
{
public:
// some code here
};
为什么在继承时使用'sizeof(T)'作为模板参数,而不仅仅是普通的'T'?有可能有动态大小的T吗?没有大小之分……'操作符,所以它可能与可变模板无关。是吗?谢谢。
因为optional_base
不需要模板类型参数,而是模板值参数(类型为unsigned long
)。
相关文章:
- 为什么C++构造函数在继承中需要默认参数?
- C++接口继承不同的参数方法
- 如何在继承层次结构中调用具有默认参数的构造函数?
- 模板的继承参数设置
- 使用多参数包可变参数模板继承类
- 使用继承初始化C++中的参数
- 可变参数模板和具有继承的默认值
- 作为模板参数的成员函数指针在继承的成员函数上失败,如何以及为什么?
- 从作为模板参数传递给构造函数的类继承,或者从它们继承
- 在编译时检查未实例化的类模板是否继承自其第一个模板参数
- 继承基构造函数,基类是模板参数 (MSVC)
- C++ 函数的继承,传入参数
- C++ 模板元编程:从模板模板参数继承
- 类成员在继承的情况下用作模板参数
- C++中模板参数的类继承
- 继承专业化的模板参数推导
- 继承类模板的参数化构造函数
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- 具有可变模板的递归继承和继承参数问题
- 函数是否可以继承参数