推薦淺敘operator 的主要用法
1. operator 用于類型轉(zhuǎn)換函數(shù):
類型轉(zhuǎn)換函數(shù)的特征:
1) 型轉(zhuǎn)換函數(shù)定義在源類中;
2) 須由 operator 修飾,函數(shù)名稱是目標(biāo)類型名或目標(biāo)類名;
3) 函數(shù)沒有參數(shù),沒有返回值,但是有return
語句,在return語句中返回目標(biāo)類型數(shù)據(jù)或調(diào)用目標(biāo)類的構(gòu)造函數(shù)。
類型轉(zhuǎn)換函數(shù)主要有兩類:
1) 對象向基本數(shù)據(jù)類型轉(zhuǎn)換:
對象向不同類的對象的轉(zhuǎn)換:
例程1:
//通過類型轉(zhuǎn)換函數(shù)求半徑為5的圓的面積
//并將其存儲在float型變量中打印輸出
#i nclude<iostream>
using namespace std;
class CArea
{
float area;
public:
CArea()
{
area=0;
}
CArea(floata)//重載含有一個參數(shù)的構(gòu)造函數(shù)
{
area=a;
}
void getArea()
{
cout<<area<<endl;
}
void setArea(float a)
{
area=a;
}
operatorfloat()//類型轉(zhuǎn)換函數(shù)
{
//將面積類對象轉(zhuǎn)換為float型數(shù)據(jù)
return area;
}
};
class CCircle
{
float R;
public:
void getR()
{
cout<<R<<endl;
}
void setR(float r)
{
R=r;
}
operator CArea()//類型轉(zhuǎn)換函數(shù)
{//將圓類對象轉(zhuǎn)為面積類對象
float area=3.1415926*R*R;
return (CArea(area));
}
};
void main()
{
CCircle cir;
CArea are;
float a;
cir.setR(5);
cir.getR();//打印圓的半徑
are.getArea();//打印轉(zhuǎn)換前的面積
are=cir;//將圓類對象轉(zhuǎn)為面積類對象
are.getArea();//打印轉(zhuǎn)換后的面積
a=are;//將面積類對象轉(zhuǎn)換為float型數(shù)據(jù)
cout<<a<<endl;
}
2. operator 用于操作符重載:
操作符重載的概念:
將現(xiàn)有操作符與一個成員函數(shù)相關(guān)聯(lián),并將該操作符與其成員對象(操作數(shù))一起使用。
注意事項:
1)重載不能改變操作符的基本功能,以及該操作符的優(yōu)先級順序。
2) 重載不應(yīng)改變操作符的本來含義。
3)只能對已有的操作符進行重載,而不能重載新符號。
4) 操作符重載只對類可用。
5) 以下運算符不能被重載:
.原點操作符(成員訪問符)
*指向成員的指針
::作用域解析符
?:問號條件運算符
sizeof 操作數(shù)的字節(jié)數(shù)
操作符函數(shù)的一般格式:
return_type operator op(argument list);
return_type:返回類型(要得到什么)
op:要重載的操作符
argument list:參數(shù)列表(操作數(shù)有哪些)
例程2:
//重載大于號操作符比較兩個人的工資
#i nclude<iostream>
using namespace std;
class employee
{
int salary;
public:
void setSalary(int s)
{
salary=s;
}
void getSalary()
{
cout<<salary<<endl;
}
bool operator >(const employee &e)//重載大于號操作符
{
if(salary > e.salary)
return true;
else
return false;
}
};
void main()
{
employee emp1,emp2;
emp1.setSalary(1000);
emp2.setSalary(2000);
if (emp1 > emp2)
{
cout<<"emp1比emp2工資高"<<endl;
}
else
{
cout<<"emlp1沒有emp2工資高"<<endl;
}
}
愛華網(wǎng)



