构造函数中的初始化列表能否用于模板类中
Can initialization list in constructors be used in template classes?
我发现大多数关于C++模板的书都没有说明在模板类的构造函数中是否可以使用初始化列表。
例如,我有这样的代码:
template <class T>
class Stack {
T* data;
std::size_t count;
std::size_t capacity;
enum {INIT = 5};
public:
Stack() {
count = 0;
capacity = INIT;
data = new T [INIT];
}
我可以用替换构造函数吗
Stack(): count(0), capacity(INIT), data(new T [INIT])
是。编译器告诉你其他情况了吗?
我刚刚尝试过,VS2008说这还可以,但这似乎有点奇怪,因为一些伟大的作者没有这样做(例如Eckel在他的"用C++思考"中)。
相关文章:
- 没有用于初始化C++中的变量模板的匹配构造函数
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- "const wchar_t *" 类型的值不能用于初始化类型 "const PWSTR" 的实体
- 没有用于初始化模拟工厂的匹配构造函数
- 模板 ctor 类型推导不起作用(没有匹配的构造函数用于初始化 ...)与函数<>参数
- 制作可用于初始化向量的迭代器
- 回调方法显示错误,类型为"void(*)"的值不能用于初始化类型的实体
- 用于初始化结构的 void 指针强制转换
- 错误:没有用于初始化和mexfunction的匹配构造函数
- 没有用于初始化可变参数模板类的匹配构造函数
- 类型值不能用于初始化类型实体
- ifstream 没有用于初始化的匹配构造函数
- 用于初始化类内动态数组的函数
- C++17 用于初始化模板类的折叠表达式的极限类型
- VSCod 中的C++:错误:没有用于初始化'std::thread'的匹配构造函数
- 没有用于初始化"ifStream"的匹配构造函数
- 没有用于初始化 std::lock_guard<std::mutex 的匹配构造函数>
- 没有用于初始化我的自定义分配器的匹配构造函数
- 没有用于初始化'point'的匹配构造函数
- C++11 cmake O3 选项<没有用于初始化 'std::thread' 的匹配构造函数>