c++:使用构造函数实现操作符
c++: implement operators using constructors
我在c++中创建了一个类,它具有unsigned short
, signed short
, `const char*
等的构造函数。我想重载所有这些类的操作符。最有效的方法是什么?我真的需要为每个操作符和每种类型写一个函数吗?或者可以使用一些魔法?
我想重载新类型的变量可以在其他类型的左边或右边的情况。此外,我想调整一些类型,例如,如果我添加Float, double或Float,新类型Int必须返回新类型Float。如果不为每种类型手动编写函数,这一切都可能吗?
提前感谢!
对于问题的第二部分,您可以返回调整后的类型:
template <typename T>
class Class
{
T data;
public:
Class (const T& data) : data(data) {}
template <typename U>
auto operator+(const U &x) -> typename std::common_type<T, const U&>::type
// ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
{
return data + x;
}
};
int main()
{
Class<int> obj(10);
double x = obj + 12.5;
}
我希望我很好地理解了你的问题
相关文章:
- 复制/移动操作符是否可以安全地用于实现复制/移动分配操作符
- 如果操作符delete没有实现,为什么不编译它
- 一个更容易的拷贝分配操作符实现
- 通过调用Move赋值操作符实现Move构造函数
- 实现没有临时的转换操作符
- 在c++中实现shell的bash操作符
- c++操作符重载:用+=实现+
- c++:使用构造函数实现操作符
- 如何为代理类实现相等操作符函数
- 在c++中实现抽象接口的操作符重载
- 选择模板化的操作符实现
- 带有重载操作符的整型向量的实现无法正常运行
- 三法则.复制构造函数,赋值操作符实现
- 移动构造函数和赋值操作符,使用复制-交换习惯实现
- 根据move构造函数实现复制赋值操作符
- 如何在类中实现提取操作符
- 实现了在磁盘上存储值的容器的迭代操作符*
- c++中迭代器的前缀和后缀自增操作符重载实现的区别
- 实现指针转换操作符
- 为什么我要将复制构造函数和赋值操作符设为私有并在c++中实现呢?