在c++中创建自己的操作符

Create my own operator in c++

本文关键字:自己的 操作符 创建 c++      更新时间:2023-10-16

我知道可以重载c++中已经存在的操作符来定义所需的行为,但是有可能创建自己的操作符吗?

例如,创建一个返回容器大小的操作符#:

template<typename T>
size_t operator#(const T& obj) { return obj.size(); }
vector<int> v(1024);
cout << #v; // prints 1024

No。您需要坚持使用解析器已经知道如何处理的操作符。重载可以扩展表达式的含义,但是语法是固定的。

不可能。

不管怎样,如果你把你的容器命名为define会发生什么呢?

您可以创建一个新的类型(称为Foo),然后创建一个将Bar转换为FooBar::operator Foo()

这可能不是你想要的。

不能创建自己的#操作符。首先,它应该放在(已经非常臃肿的)c++优先级表的哪个位置呢?它是从左到右还是从右到左的结合律?你甚至要如何指定这些东西,还有更多?

创建一个全新的操作符有很多问题,语言根本不允许这样做。

答案是否定的!您只能重载所有已知的操作符,顺便说一下,您不能改变预定操作符的行为,那么您就不能改变操作符'+'的行为,例如,对于int数据类型。div;)