一、函数重载
函数重载是一种特殊情况,C++允许在同一作用域中声明几个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同。
注意:c语言不允许函数重载
下面同名set,但是不同的形参列表,执行不同的任务。
#include "iostream"
using namespace std;
class Person{
public:
void set(int num,string name){
this->number=num;
this->name=name;
cout<<"name: "<< this->name;
cout<<" number: "<< this->number<<endl;
}
void set(string name){
this->name=name;
cout<<"name: "<< this->name<<endl;
}
private:
string name;
int number;
};
int main(){
Person person;
person.set(133,"antonio");//name: antonio number: 133
person.set("steve");//name: steve
return 0;
}
二、运算符重载
运算符重载是让运算符在不同情况执行不同功能。
重载运算符格式
返回值类型 operator 运算符名称 (形参表列){
//TODO:}
#include "iostream"
using namespace std;
class Complex{
public:
//默认构造函数
Complex(){
this->real=0.0;
this->imaginary=0.0;
}
Complex(float real,float imaginary){
this->real=real;
this->imaginary=imaginary;
}
void setReal(float real){
this->real=real;
}
void setImaginary(float imaginary){
this->imaginary=imaginary;
}
void show(){
cout<<"imaginary number is :"<<this->real<<"+"<<this->imaginary<<"i"<<endl;
}
//重载运算符+
Complex operator +(const Complex &a){
Complex B;
B.real=this->real+a.real;
B.imaginary=this->imaginary+a.imaginary;
return B;
}
//const修饰形参表明是一个输入参数,在函数内部不可以改变其值
friend Complex operator -(const Complex &a,const Complex &b);
private:
float real;
float imaginary;
};
//重载-为全局函数,故而需要在类中设置友元
Complex operator -(const Complex &a,const Complex &b){
Complex B;
B.real=a.real-b.real;
B.imaginary=a.imaginary-b.imaginary;
return B;
}
int main(){
Complex complex1(10.5,10.7);
Complex complex2(10.2,10.5);
Complex complex3=complex1+complex2;
Complex complex4=complex1-complex2;
complex1.show();//imaginary number is :10.3+10.4i
complex2.show();//imaginary number is :10.5+10.6i
complex3.show();//imaginary number is :20.8+21i
complex4.show();//imaginary number is :0.3+0.2i
return 0;
}