运算符重载的两种基本方法:使用类成员函数和友元函数,注意它们之间参数的差异。
时间: 2024-02-28 16:55:51 浏览: 126
运算符重载可以通过类成员函数和友元函数两种基本方法来实现,两种方法的主要区别在于参数的不同。
1. 类成员函数重载运算符:
运算符重载函数作为类的成员函数来实现,它的第一个参数是隐含的this指针,指向调用该函数的对象,其余的参数根据运算符的不同来确定。例如,重载"+"运算符的函数定义为:
```c++
class A {
public:
A operator + (const A& b) const {
A res;
// 实现加法操作
return res;
}
};
```
2. 友元函数重载运算符:
运算符重载函数可以作为类的友元函数来实现,它不是类的成员函数,但可以访问类的私有成员。友元函数的第一个参数是要操作的对象,其余的参数根据运算符的不同来确定。例如,重载"<<"运算符的函数定义为:
```c++
class A {
friend ostream& operator<<(ostream& os, const A& a) {
// 实现输出操作
return os;
}
};
```
需要注意的是,在友元函数中,参数列表中的第一个参数通常是被操作的对象,而在类成员函数中,第一个参数是隐含的this指针。
阅读全文