c++語言 運算符重載 使用重載運算符實現類的加法運算


//運算符重載
//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類型參數,表示后置運算;不帶參數表示前置運算.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM