C++运算符重载




#include <iostream>
//运算符重载 
using namespace std;

class A{
public :   //如果是私有的下面必须用友元函数,因为调用了内部私有成员。
            //friend A operator+(A &a1,A &a2)
	int a;
public :
	A(){
		
	}
	A(int a){
		this->a=a;
	}
	int getA(){
		return a;
	}
	//成员函数完成运算符重载
	A operator-(A &a60){
		A temp(this->a-a60.a);//隐藏了指针,用this指针 
		return temp;
	}
	//成员函数完成一元运算符
	A& operator++() {//前置++ 
		this->a++;
		return *this;//先看操作符,再看返回的是什么,返回的&地址,所以用*this 
	}
	
}; 

A operator+(A &a1,A &a2){全局函数 完成 +操作符 重载
                            //Complex operator+(Complex &c1, Complex &c2)
	A a3(a1.a+a2.a);
	return a3;
	
} 
A operator++(A &a,int) {//后置++ ,因为前置与后置重复了,用int占位符区别。 
		a.a++;
		return a;//先看操作符,再看返回的是什么,返回的&地址,所以用*this 
	}
	//重载<<如果是私有属性则用友元函数。 
ostream& operator<<(ostream &out,A &a0){
		out<<"生活真是苦"<<endl;
		out<<a0.a<<endl;
		return out; 
}

int main(){
	A a4(20);
	A a5(30);
	A a6;
	A a7;
   a6=a4+a5;
   cout<<a6.getA()<<endl;//50
   a7=a6-a4;
   cout<<a7.getA()<<endl;//30
   ++a7;
    cout<<a7.getA()<<endl;//31
    a7++;
    cout<<a7.getA()<<endl;//32
    cout<<a7<<endl;
}

#include <iostream>

using namespace std;

class A{
public :   
	int a;
public :
	//()的运算符重载 
     int operator() (int a,int b){
     	return a*a+b*b;
	 }
	 A(){
	 	
	 }
} ;
int main(){
	A a;
	cout<<a(2,3)<<endl;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值