友元函数、友元类以及运算符重载

1、友元函数:
类中声明,类外定义,不属于类,但可以访问类中成员变量
2、友元类:
类中声明,类外定义,可以访问友类中的所有成员(包括成员变量,成员函数.一般不用)
3、运算符重载:
将所需要的运算符重载,可实现对象的运算
必须使用友元函数进行重载:>>和<<
必须使用成员函数进行重载:= [] () ->
不可进行重载的运算符:求大小sizeof,域名解析符::,三目运算符,点运算符

例:
假如有个名为student的类
输出运算符重载:

ostreamn &operator<<(ostream&os,student &b)//&v可以不用,使用引用可以提高效率
{
os<<b.data;
return os;
}

输入运算符重载

istream &operator>>(istream&is,student &v)//&v必须要引用,修改值
{
is>>v.data;
return is;
}

a++,++a,前者返回类型不需要引用,后者需要引用(连续前者a++++不可以,后者++++a可以)
注意:需要连续使用返回类型为引用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用友元函数重载加减乘除运算符来实现分数类的运算。首先,我们需要定义一个表示分数的类,其中包含分子和分母两个成员变量。 ```cpp #include <iostream> class Fraction { public: Fraction(int numerator = 0, int denominator = 1) : num(numerator), den(denominator) {} // 声明友元函数 friend Fraction operator+(const Fraction& f1, const Fraction& f2); friend Fraction operator-(const Fraction& f1, const Fraction& f2); friend Fraction operator*(const Fraction& f1, const Fraction& f2); friend Fraction operator/(const Fraction& f1, const Fraction& f2); void print() const { std::cout << num << "/" << den << std::endl; } private: int num; // 分子 int den; // 分母 }; // 友元函数重载加法运算符 Fraction operator+(const Fraction& f1, const Fraction& f2) { int numerator = f1.num * f2.den + f2.num * f1.den; int denominator = f1.den * f2.den; return Fraction(numerator, denominator); } // 友元函数重载减法运算符 Fraction operator-(const Fraction& f1, const Fraction& f2) { int numerator = f1.num * f2.den - f2.num * f1.den; int denominator = f1.den * f2.den; return Fraction(numerator, denominator); } // 友元函数重载乘法运算符 Fraction operator*(const Fraction& f1, const Fraction& f2) { int numerator = f1.num * f2.num; int denominator = f1.den * f2.den; return Fraction(numerator, denominator); } // 友元函数重载除法运算符 Fraction operator/(const Fraction& f1, const Fraction& f2) { int numerator = f1.num * f2.den; int denominator = f1.den * f2.num; return Fraction(numerator, denominator); } ``` 在上述代码中,我们使用了友元函数来实现加减乘除运算符重载友元函数可以直接访问类的私有成员变量,因此可以进行相应的运算。通过重载加减乘除运算符,我们可以直接对两个分数对象进行运算。 下面是一个示例的使用: ```cpp int main() { Fraction f1(1, 2); Fraction f2(3, 4); Fraction sum = f1 + f2; std::cout << "Sum: "; sum.print(); Fraction diff = f1 - f2; std::cout << "Difference: "; diff.print(); Fraction product = f1 * f2; std::cout << "Product: "; product.print(); Fraction quotient = f1 / f2; std::cout << "Quotient: "; quotient.print(); return 0; } ``` 输出结果为: ``` Sum: 10/8 Difference: -2/8 Product: 3/8 Quotient: 4/6 ``` 注意,在实际应用中,还需要进行一些额外的处理,例如约分等。上述代码只是一个简单示例,仅用于说明如何使用友元函数重载加减乘除运算符

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值