c++运算符重载
时间: 2023-07-05 21:22:20 浏览: 91
C++允许在类中重载运算符,这样可以让类的实例对象像内置类型一样使用运算符。运算符重载可以通过成员函数或非成员函数来实现,其中成员函数的形式为operator运算符(),非成员函数的形式为operator运算符(参数)。
例如,可以重载加法运算符+来实现两个自定义类对象相加的操作,代码如下:
```c++
class MyInt {
public:
int value;
MyInt(int v) : value(v) {}
MyInt operator+(const MyInt& other) {
return MyInt(value + other.value);
}
};
int main() {
MyInt a(1);
MyInt b(2);
MyInt c = a + b; // 等价于 c = a.operator+(b);
return 0;
}
```
在上面的代码中,MyInt类重载了加法运算符+,使得两个MyInt对象可以通过+运算符相加。
相关问题
c++ 运算符重载差集
C++运算符重载是一种特性,允许我们重新定义已有的运算符的行为,使其适用于自定义的数据类型。差集运算符(-)也可以进行重载。
差集运算符用于计算两个集合之间的差异,即从一个集合中去除另一个集合中存在的元素。在C++中,我们可以通过重载差集运算符来实现集合类的差集操作。
下面是一个示例代码,演示了如何重载差集运算符:
```cpp
#include <iostream>
#include <set>
class Set {
private:
std::set<int> elements;
public:
Set() {}
Set(std::initializer_list<int> initList) {
for (int element : initList) {
elements.insert(element);
}
}
Set operator-(const Set& other) const {
Set difference;
for (int element : elements) {
if (other.elements.find(element) == other.elements.end()) {
difference.elements.insert(element);
}
}
return difference;
}
void print() const {
for (int element : elements) {
std::cout << element << " ";
}
std::cout << std::endl;
}
};
int main() {
Set set1 = {1, 2, 3, 4, 5};
Set set2 = {3, 4, 5, 6, 7};
Set difference = set1 - set2;
difference.print(); // 输出: 1 2
return 0;
}
```
在上面的示例中,我们定义了一个名为Set的类,表示一个集合。通过重载差集运算符(operator-),我们可以使用减号操作符来计算两个Set对象之间的差集。在重载函数中,我们遍历第一个集合的元素,并检查它们是否存在于第二个集合中。如果不存在,则将其添加到差集中。
相关问题:
1. 什么是运算符重载?
2. 如何重载其他运算符?
3. 运算符重载有什么注意事项?
c++ 运算符重载减法
C++运算符重载是一种特性,它允许我们重新定义已有的运算符的行为,使其适用于自定义的数据类型。对于减法运算符(-),我们可以通过重载来定义两个对象相减的操作。
在C++中,减法运算符可以通过成员函数或非成员函数进行重载。下面是一个示例,展示了如何通过成员函数重载减法运算符:
```cpp
#include <iostream>
class MyClass {
private:
int value;
public:
MyClass(int val) : value(val) {}
MyClass operator-(const MyClass& other) {
MyClass result(value - other.value);
return result;
}
int getValue() const {
return value;
}
};
int main() {
MyClass obj1(5);
MyClass obj2(3);
MyClass result = obj1 - obj2;
std::cout << "Result: " << result.getValue() << std::endl;
return 0;
}
```
在上面的示例中,我们定义了一个名为`MyClass`的类,并在其中重载了减法运算符。重载函数的名称是`operator-`,它接受一个常量引用参数`other`,表示要减去的另一个对象。在函数体内,我们执行了相应的减法操作,并返回一个新的`MyClass`对象作为结果。
在`main`函数中,我们创建了两个`MyClass`对象`obj1`和`obj2`,并将它们相减得到结果`result`。最后,我们输出了结果的值。