模板类可以有纯虚函数和虚运算符吗?
Can a template class have pure virtual functions and virtual operators?
我的教授非常坚持界面类不能被模板化。具体来说,具有纯虚函数的类不能具有模板参数。更进一步,他说你不能做虚拟运营商。
这是他当时向我们展示的例子。
template <typename T>
class Array {
public:
virtual void fill(T t) = 0;
virtual T& operator[](size_t i) const = 0;
// ...
};
这段代码没有错吧?历史上有没有C++不会编译的时刻?我在作业中使用了这种确切形式的代码,它运行良好。
模板类可以有纯虚函数和虚运算符吗?
是的。
这段代码没有错吧?
右。
历史上有没有C++不会编译的时刻?
可能。我不能肯定地说它会用原来的 Cfront 转译器编译。
但是,它在任何标准C++版本中的格式都很好。
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 重载运算符new[]的行为取决于析构函数
- 构造函数和转换运算符之间的重载解析
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 是什么让一些命名函数/运算符与众不同?
- 删除了所有自动生成的构造函数/运算符的类仍然可以从函数返回吗
- 如何在局部类中定义友元函数运算符>>?
- 隐式转换和函数运算符
- 如何从函数运算符(x,y)返回向量元素的引用
- C++/析构函数-运算符删除
- 获取函数运算符<未定义的引用
- VS2012 std::函数运算符 bool 意外返回 true
- "Polymorphic"非成员函数/运算符,是否需要额外的重载?
- Xcode - 控制到达非无效函数运算符错误的末尾
- 重载类函数运算符兼任二传手和吸气手
- 为简单结构定义哪个复制/移动构造函数/运算符
- 关于函数/运算符重载的困惑
- 函数运算符上的未定义引用>>
- C++ 重载函数运算符和继承,无法在子类函数中正确使用它
- 如何使用另一个类的重载函数运算符(operator())