运算符重载c++定义和代码
时间: 2023-08-12 18:59:05 浏览: 65
运算符重载是C++中的一种特性,它允许我们对已有的运算符进行重新定义,以便适应自定义类型的操作。通过运算符重载,我们可以为自定义类添加与其他对象的相加、相减、相乘等操作。
下面是运算符重载的定义和示例代码:
定义:
1. 运算符重载使用特殊的函数名和语法来定义。函数名以`operator`关键字开始,后面跟着要重载的运算符。
2. 运算符重载函数可以作为类的成员函数或全局函数进行定义。
3. 运算符重载函数必须指定参数和返回类型,以及如何执行相应的操作。
示例代码:
```cpp
class MyNumber {
private:
int value;
public:
MyNumber(int num) : value(num) {}
// 运算符+的重载
MyNumber operator+(const MyNumber& other) {
int result = this->value + other.value;
return MyNumber(result);
}
// 运算符<<的重载(全局函数)
friend std::ostream& operator<<(std::ostream& os, const MyNumber& obj);
};
// 运算符<<的重载(全局函数)
std::ostream& operator<<(std::ostream& os, const MyNumber& obj) {
os << obj.value;
return os;
}
```
使用运算符重载的示例代码:
```cpp
MyNumber num1(5);
MyNumber num2(10);
MyNumber sum = num1 + num2; // 使用重载的+运算符进行相加操作
std::cout << "Sum: " << sum << std::endl; // 使用重载的<<运算符进行输出操作
```
在上述示例中,我们定义了一个名为`MyNumber`的类,并重载了运算符`+`和`<<`。重载的`+`运算符用于对两个`MyNumber`对象进行相加操作,返回一个新的`MyNumber`对象。重载的`<<`运算符用于在输出流中输出`MyNumber`对象的值。
需要注意的是,不是所有的运算符都可以被重载,例如赋值运算符`=、`.`和`::`等不能被重载。此外,运算符重载也需要遵循一些约定和限制,例如保持运算符的原有语义,避免过度使用运算符重载等。
运算符重载是C++中强大且灵活的特性,可以使我们的代码更加直观和易读。但在使用时需要慎重考虑,并确保符合语义和预期行为。