//運算符重載 //C++提供了許多內置數據類型,如整形、浮點型、字符型等,也提供了相應的運算符(+,-,>,<等),用於進行數據的數學運算和邏輯運算. //重載運算符的格式如下: //函數類型 operator 運算符號 (參數列表) //{對運算符的重載處理} //使用重載運算符實現類的加法運算 #include <iostream> using namespace std; class Man //聲明一個Man類 { public: Man(int a = 0, int h = 0); Man operator +(Man &a); //重載"+"實現相加的功能 void display(); //顯示類中的信息 private: int age; int height; }; Man::Man(int a, int h) { age = a; height = h; } void Man::display() { cout << "age is:" << age << endl; cout << "height is:" << height << endl; } Man Man::operator +(Man &a) //定義重載運算符函數 { Man c; c.age = a.age + age; c.height = a.height + height; return c; } int main(int argc, char * argv[]) { Man a(20, 170); Man b(30, 180); Man c; c = a + b; //將兩個對象相加,然后賦值給C對象 a.display(); b.display(); c.display(); return 0; } //有以下幾點重載運算符的限制需要讀者注意: //*C++中不允許用戶定義新的運算符,只能對已有的運算符進行重載. //*不能改變原有運算符操作數的個數. //*不能改變原有運算符的優先級. //*不能改變原有運算符的結合性. //*不能改變原有運算符的語法結構. //對於C++中的大多數運算符來說都是可以進行重載,但是"::", "?", ":"和"."運算符不能被重載. //重載運算符的規則如下: //*一元操作數可以是不帶參數的成員函數,或者是帶一個參數的非成員函數. //*二元操作數可以是帶一個參數的成員函數,或者是帶兩個參數的非成員函數. //*"=","[]","->"和"()"運算符只能定義為成員函數. //*"->"運算符的返回值必須是指針類型或者能夠使用"->"運算符類型的對象. //*重載"++"和"--"運算符時,帶一個int類型參數,表示后置運算;不帶參數表示前置運算.