C 學習(12) 運算子過載

2022-08-13 02:45:13 字數 1849 閱讀 8158

運算子過載概念:對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別

作用:實現兩個自定義資料型別相加的運算

#include #include using namespace std;

//加號運算子過載

class person

int m_a;

int m_b;

};//2.全域性函式過載+號

person operator+(person &p1,person &p2)

//3.函式過載的版本

person operator+(person &p1,int num)

void test01()

//1.過載前置++運算子

//返回引用是為了一直對乙個資料進行遞增操作

myinterger & operator++()

//2.過載後置++運算子

//int代表乙個佔位引數,可以用於區分前置和後置遞增

//後置遞增一定不能返回引用,因為temp為區域性變數,函式執行完後自動釋放

myinterger operator++(int)

private:

int m_num;

};//過載左移運算子

ostream & operator<<(ostream &cout, myinterger myint)

void test01()

void test02()

int main()

總結:前置遞增返回的是引用,後置遞增返回的是值

c++編譯器至少給乙個類新增4個函式

預設建構函式(無參,函式體為空)

預設析構函式(無參,函式體為空)

預設拷貝建構函式,對屬性值進行拷貝

賦值運算子operator=,對屬性值進行拷貝

如果類中有屬性指向堆區,做賦值操作時也會出現深淺拷貝問題

#includeusing namespace std;

class person

~person()

} //過載賦值運算子

person& operator=(person &p)

m_age = new int(*p.m_age);

return *this;

} int *m_age;

};void test01()

int main()

作用:過載關係運算子,可以讓兩個自定義型別物件進行對比操作

#include#includeusing namespace std;

class person

bool operator==(person &p)

return false;

} bool operator==(person &p)

return true;

} string m_name;

int m_age;

};void test01()

else

}int main()

#include#includeusing namespace std;

//函式呼叫運算子的過載

//列印輸出類

class myprint

};class myadd

};void myprint02(string test)

void test01()

void test02()

int main()

C 學習 運算子過載

同函式過載一樣,算數操作符過載能夠帶給我們操作不同資料型別的方法,包括你自己定義的類。我們日常最常用的就是加 減 乘 除,而它們的性質又有些相似。所以,它們的運算子實現方式也有些相似。共有三種實現方式 首先,我們介紹怎樣使用友鄰函式定義操作符過載。看下面的 include class cents 使...

c 學習運算子過載

運算子過載 1 實驗目的 學習掌握重定義與類有關的運算子。把握過載運算子的時機。學習掌握把乙個類物件轉換為另乙個類物件。學習掌握過載為成員與友元的區別及其帶引數的情況。學習掌握值返回與引用返回的區別及應用時機。2 實驗內容 1 生成乙個表示複數的類fs。複數的實部sb和虛部xb作為其資料成員。提供成...

C 學習 運算子過載

運算子過載的本質 過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。大多數的過載運算子可被定義為普通的非成員函式或者被定義為類成員函式。非成員函式 需要為每次操作傳遞兩個引數 box oper...