在c++中创建自己的操作符
Create my own operator in c++
我知道可以重载c++中已经存在的操作符来定义所需的行为,但是有可能创建自己的操作符吗?
例如,创建一个返回容器大小的操作符#
:
template<typename T>
size_t operator#(const T& obj) { return obj.size(); }
vector<int> v(1024);
cout << #v; // prints 1024
No。您需要坚持使用解析器已经知道如何处理的操作符。重载可以扩展表达式的含义,但是语法是固定的。 不可能。 不管怎样,如果你把你的容器命名为define会发生什么呢? 您可以创建一个新的类型(称为 这可能不是你想要的。 不能创建自己的 创建一个全新的操作符有很多问题,语言根本不允许这样做。 答案是否定的!您只能重载所有已知的操作符,顺便说一下,您不能改变预定操作符的行为,那么您就不能改变操作符'+'的行为,例如,对于int数据类型。div;) Foo
),然后创建一个将Bar
转换为Foo
的Bar::operator Foo()
。#
操作符。首先,它应该放在(已经非常臃肿的)c++优先级表的哪个位置呢?它是从左到右还是从右到左的结合律?你甚至要如何指定这些东西,还有更多?
相关文章:
- 没有为自己的结构调用列表推回方法
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- C++从对象自己的类中删除对象
- 使用 std::optional,而不是自己的结构
- 子轴围绕父轴而不是他自己的轴旋转
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- C++ 如何为自己的迭代器类从迭代器转换为const_iterator?
- 重载 + 自己的类和 std::string 的运算符
- 类无法访问自己的私有静态 constexpr 方法 - Clang bug?
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 如何访问模板参数自己的模板参数?
- 将矩阵乘以我自己的输入的向量
- 为自己的流类重载插入操作符
- 重载操作符来处理我自己的类作为std类是一个好做法吗?
- 创建了自己的字符串类——重载赋值操作符和析构函数的错误
- 使用我自己的String类和<<操作符
- 在c++中创建自己的操作符
- 我可以添加自己的类型转换操作符,以便能够将c++对象转换为objective C吗?
- 派生对象没有使用自己的操作符=