c++之操作符重载(二)

操作符重载可以用两种方式重载

一、用顶层函数进行操作符重载

二、用friend函数进行操作符重载

三、使用成员函数进行操作符重载(在上一篇文章讲过讲过)


1、一个以顶层函数形式被重载的操作符必须在它的参数表中包含一个类的对象

通常,如果使用成员函数重载二元操作符时,只需要一个参数。而用顶层函数时需要两个参数,这两个参数对应着二元操作符的两个操作数。下标操作符[],赋值操作符=,函数调用操作符(),指针操作符->必须以类的成员函数的形式重载;

class Complex
{
public:
	Complex();
	Complex(double );
	Complex(double ,double);
	void write() const;
	double get_real() const { return real; }
	double get_imag() const { return imag; }

private:
	double real;
	double imag;
};

类的声明与用成员函数重载操作符有所不同,用成员函数重载函数时需要在类里面进行声明;

Complex operator+(const Complex&) const;
顶层函数在调用操作符函数:

Complex operator+(const Complex& t, const Complex& u)
{
	return Complex(t.get_real + u.get_real, t.get_imag + u.get_imag);
}

2、类的私有成员只能被该类的成员函数和该类的friend函数访问,类的保护成员只能被该类的或其派生的成员函数和该类的frieng函数访问。

class C
{
    //...
    friend int f();
   //...
}
该声明的作用是赋予f访问C的私有和保护成员的权利,因为f不是成员函数;

class Complex
{
public:
	Complex();
	Complex(double );
	Complex(double ,double);
	void write() const;
	
	friend Complex operator+(const Complex&, const Complex&);
	friend Complex operator-(const Complex&, const Complex&);
	friend Complex operator*(const Complex&, const Complex&);
private:
	double real;
	double imag;
};
Complex operator+(const Complex& t, const Complex& u)
{
	return Complex(t.real + u.real, t.imag+ u.imag);
}





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值