C++友类匿名对象,运算符重载

 

#include <iostream> 
  
using namespace std; 
  
// 封装了一个名为Stu的类  
class Stu  
{  
    // 声明友元函数,允许这些函数直接访问Stu类的私有成员  
    friend const Stu operator+(const Stu &left,const Stu &right); // 加法重载函数  
    friend const Stu operator*(const Stu &left,const Stu &right); // 乘法重载函数  
  
private:  
    int a; // 私有成员变量a  
    int b; // 私有成员变量b  
  
public:  
    Stu() // 默认构造函数  
    {  
        // 默认构造,不执行任何特定初始化  
    }  
  
    Stu(int a,int b):a(a),b(b) // 带参数的构造函数,初始化列表方式赋值  
    {  
        // 使用初始化列表进行成员变量初始化  
    }  
  
    void show() // 成员函数,用于显示成员变量的值  
    {  
        cout << "a= " << a << endl;  
        cout << "b= " << b << endl;  
    }  
  
    // 成员函数实现"-"重载  
    const Stu operator-(const Stu &right) const // 减法重载函数,返回一个新的Stu对象,表示两个Stu对象相减的结果  
    {  
        Stu temp; // 创建一个临时的Stu对象  
        temp.a = a - right.a; // 计算a的差值  
        temp.b = b - right.b; // 计算b的差值  
        return temp; // 返回新的Stu对象  
    }  
};  
  
// 全局函数实现"+"重载  
const Stu operator+(const Stu &left,const Stu &right) // 加法重载函数,返回一个新的Stu对象,表示两个Stu对象相加的结果  
{  
    Stu temp; // 创建一个临时的Stu对象  
    temp.a = left.a + right.a; // 计算a的和  
    temp.b = left.b + right.b; // 计算b的和  
    return temp; // 返回新的Stu对象  
}  
  
// 全局函数实现"*"重载  
const Stu operator*(const Stu &left,const Stu &right) // 乘法重载函数,返回一个新的Stu对象,表示两个Stu对象相乘的结果  
{  
    Stu temp; // 创建一个临时的Stu对象  
    temp.a = left.a * right.a; // 计算a的乘积  
    temp.b = left.b * right.b; // 计算b的乘积  
    return temp; // 返回新的Stu对象  
}  
  
int main() // 主函数  
{  
    Stu s1(10,20); // 创建一个Stu对象s1,并初始化  
    Stu s2(4,5);   // 创建一个Stu对象s2,并初始化  
    Stu s3 = s1 + s2; // 使用重载的+运算符,将s1和s2相加,结果赋值给s3  
    Stu s4 = s1 - s2; // 使用Stu类中重载的-运算符,将s1和s2相减,结果赋值给s4  
    Stu s5 = s3 * s4; // 使用重载的*运算符,将s3和s4相乘,结果赋值给s5  
    s3.show(); // 调用s3的show函数,显示s3的成员变量值  
    s4.show(); // 调用s4的show函数,显示s4的成员变量值  
    s5.show(); // 调用s5的show函数,显示s5的成员变量值  
  
    return 0;   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值