运算符重载为友元函数
时间: 2024-03-18 20:32:30 浏览: 110
友元运算符重载函数是指将运算符重载函数定义为某个类的友元函数。友元函数是在类外部定义的,但可以访问类的私有成员。运算符重载函数有两种形式:全局的友元函数和类的成员函数。一般来说,双目运算符重载为类的友元函数,而单目运算符重载为类的成员函数。需要注意的是,赋值复合运算符(如=、+=等)必须重载为类的成员函数。另外,友元运算符重载函数不需要在定义时加上类名前缀。如果友元运算符重载函数重载的是双目运算符,则参数表中有两个操作数;如果重载的是单目运算符,则参数表中只有一个操作数。
相关问题
定义一个分数类fraction,数据成员包括fnezi和fenum,重载运算符+使之能用于分数乘法运算,将运算符重载为友元函数。求两个分数之积并输出
好的,我可以回答这个问题。下面是一个实现了分数类fraction并重载了乘法运算符的示例代码:
```cpp
#include <iostream>
using namespace std;
class fraction {
private:
int fnum;
int fden;
public:
fraction(int num = 0, int den = 1) : fnum(num), fden(den) {};
friend fraction operator*(const fraction& a, const fraction& b) {
fraction res(a.fnum * b.fnum, a.fden * b.fden);
return res;
}
void print() {
cout << fnum << "/" << fden << endl;
}
};
int main() {
fraction a(3, 5);
fraction b(1, 2);
fraction c = a * b;
c.print();
return 0;
}
```
输出结果为:
```
3/10
```
这个例子中,我们定义了一个分数类fraction,包含了分子和分母两个数据成员。为了支持分数乘法运算,我们重载了" * "运算符,并将其声明为友元函数。在main函数中,我们创建了两个分数a和b,然后使用" * "运算符计算乘积并输出结果。
定义一个分数类fraction,数据成员包括fnezil和fenmu,重载运算符“+”,使之能用与分数的乘法运算。将运算符重载为友元函数。编写程序,求两个分数之积并输出
好的,这是一个关于C++编程的问题。下面是代码示例:
```
#include <iostream>
using namespace std;
class fraction {
private:
int fenzil; // 分子
int fenmu; // 分母
public:
// 构造函数
fraction(int fz = 0, int fm = 1) {
if (fm < 0) {
fz = -fz;
fm = -fm;
}
int gcd = gcd_compute(fz, fm);
fenzil = fz / gcd;
fenmu = fm / gcd;
}
// 友元函数
friend fraction operator*(const fraction &f1, const fraction &f2) {
int fz = f1.fenzil * f2.fenzil;
int fm = f1.fenmu * f2.fenmu;
return fraction(fz, fm);
}
// 最大公因数
int gcd_compute(int a, int b) {
if (b == 0)
return a;
else
return gcd_compute(b, a % b);
}
// 输出分数
void display() const {
cout << fenzil << "/" << fenmu;
}
};
int main() {
fraction f1(2, 3), f2(3, 4);
fraction f3 = f1 * f2;
f3.display(); // 输出答案
cout << endl;
return 0;
}
```
这个程序定义了一个分数类fraction,里面包括分子fenzil和分母fenmu。重载了运算符*,使之能够用与分数的乘法运算。运算符重载为友元函数。在主函数中创建了两个分数对象f1和f2,同时计算它们的积,并输出结果。
希望可以帮到你。
阅读全文
相关推荐











