重写现有类的运算符
Override operators for an existing class
我追求两件事。我首先想将vector
类键入更有意义的内容,例如List
。我尝试了以下方法,但它给了我一个编译错误:
template <typename T>
typedef vector<T> List<T>
其次,我想覆盖 vector
类的<<
运算符,但我不知道如何在不创建新类的情况下做到这一点。
这似乎适得其反,但我的最终目标是让非程序员(或以前没有做过 c++ 的人)可以阅读一些语义上有意义的东西。
如果你这样做,非程序员仍然无法阅读,更不用说更改代码了。但是,C++程序员在阅读代码时也会遇到很多麻烦。
如果他们不会编码,并且需要一个C++程序员为他们编写代码,那么他们将需要一个C++程序员来理解、维护和扩展第一个C++程序员编写的代码。
如果OTOH他们需要用C++编码,那么——令人惊讶!——他们将不得不学习编写和阅读C++代码。
两者之间真的什么都没有。
C++ 中没有模板typedef
,但您可以在 C++11 中使用using
。
template<class T>
using List = std::vector<T>;
// ...
List<int> foo; // aka std::vector<int> foo;
运算符重载可以在不修改类的情况下完成。
template<class T>
std::vector<T>& operator<<(std::vector<T>& vec, const T& value) {
vec.push_back(value); // or whatever you want to do.
return vec;
}
只需将其放在某个地方,它应该可以工作,即使在std::vector
的类定义之外。
相关文章:
- C++:从抽象类重写纯虚拟运算符重载
- 重写派生类中的二元运算符
- 将方法委托给成员的重写运算符>
- 通过运算符使用标量参数重写来修改类成员
- 重写自定义数组类的运算符/开始/结束
- 使用空实现重写删除运算符
- 使派生类使用重写运算符
- 试图重写代码以包括模量运算符
- 重写运算符 [] 和调用方法
- 将运算符重写应用于具有动态分配指针的类
- 如何在模板子类中重写转换运算符C++
- 重写运算符的返回类型=
- 重写C++中的类和运算符
- 重写迭代器的运算符*()
- Boost Python重写相等运算符
- 更正重写的QDataStream运算符和链接问题
- 类中调用的重写[]运算符的版本错误
- C++运算符重写
- 堆中的对象和重写索引运算符
- 重写String类中的下标运算符