C++ 运算符重载

运算符重载 把运算符重新定义新的规则,运算符实际上是函数的一种简化形式,几乎所有运算符都可以重载除以下:. :: ?: sizeof这些不能做运算符重载
运算符重载基本上出现在类中和结构中:

  • 运算符重载要满足原来的规则
  • 运算符理解为函数的一个表现

首先考虑返回值,只能返回一个新的变量只能用拷贝;
operator运算符 来代表函数名
参数列表:因为通过对象的成员函数来实现运算符重载,所以this算一个参,只能是第一个参
例:

CA operator+ (CA const& srcCA) const;//声明
CA ::CA operator+ (CA const& srcCA) const//定义
{
	CA z;
	z.a=this->a+srcCA.a;
	return z;
}

CA x(1);
CA y(2);
x+y;//CA对象的+运算符的符号调用
CA n(x.operator+(y));//CA对象的+运算符的函数调用

自增长牵制写法

CA &operator++ ();//++前置声明
CA ::CA &operator++ ()
{
	this->a++;
	return *this;
}

自增长后置写法

CA operator++ (int);//定义++后置,int只是为了与前置做区分,
CA ::CA operator++(int)
{
	CA z=*this;
	this.a++;
	return z;
}

C++输入输出的运算符重载
ostream输出流 istream输入流
因为第一个参数时输入输出流不是this类型所以类型不匹配,这个运算符重载不能写在类中
输出:

friend ostream &operator<<(ostream & os,CA const& srcCA);//声明
ostream &operator<<(ostream & os,CA const& srcCA)//定义
{
	os<<strcCA.a;
	return os;
}

输入:

friend istream &operator>>(istream &is,CA const& srcCA);//声明
istream &operator>>(istream & is, CA const& srcCA)//定义
{
	is>>srcCA;
	return is;
}

如果是一个指针需要输入,首先分配一个空间接受输入

  • 分配一个空间来接受输入
  • 分配空间两种方法1.给一个足够大的临时空间,用户输入完毕,把有效数据拷贝到自身的指针2.直接限定用户的输入个数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值