操作符過載

2021-09-11 02:23:57 字數 3243 閱讀 4756

雙目操作符過載

( ) 的過載

-> 和 * 的過載

符號符號舉例

.peron.name

.*person.*name=*(person.name)

::作用域操作符

?:條件操作符

class point

point& operator++()

void

print()

private:

int m_x;

int m_y;};

//point& operator++(point& p)

//int

main

(void

)

#include

"stdafx.h"

#include

using namespace std;

class point

const point operator++

(int

)//因為不能連+的,所以加個const

void

print()

private:

int m_x;

int m_y;};

//const point operator++(point& p, int) //返回的是臨時變數,所以不能返回引用

//int

main

(void

)

operator+

(l,r)

//全域性

l.operator+

(r)//成員函式

寫法1:全域性函式,在類中申明為友元

#include

"stdafx.h"

#include

using namespace std;

class point

point operator+

(point& p2)

//定義為成員函式,禁止返回區域性變數或者它的引用

void

print()

private:

int m_x;

int m_y;};

//point operator+(point& p1,point& p2) //過載+操作符,在point類裡面申明為友元,禁止返回區域性變數或者它的引用

//int

main

(void

)

#include

"stdafx.h"

#include

using namespace std;

class point

//point& operator+=(point& p2) //或者申明成員函式

//void

print()

private:

int m_x;

int m_y;};

point& operator+

=(point& p1, point& p2)

intmain

(void

)

#include

"stdafx.h"

#include

#include

"person.h"

using namespace std;

class point

// ostream& operator<<(ostream& os) 《操作符禁止寫成員函式,否則呼叫變成: a << cout , 改變本意

// private:

int m_x;

int m_y;};

ostream& operator<<

(ostream& os, point& p)

intmain

(void

)

#include

"stdafx.h"

#include

using namespace std;

class point

void

print()

private:

int m_x;

int m_y;};

istream& operator>>

(istream& is, point& p)

intmain

(void

)

#include

"stdafx.h"

#include

#include

using namespace std;

class student

student

(int id,

const

char name)

//有參構造

student

(const student& another)

//拷貝構造

student& operator=

(const student& another)

//=操作符過載,三件事

int length =

strlen

(another.m_name)

;//3. 開闢記憶體

m_name = new char

[length +1]

;strcpy_s

(m_name, length +

1, another.m_name)

;return

*this;

}void

print()

~student()

}private:

int m_id;

char

* m_name;};

intmain

(void

)

class sqr

//想把s物件 定義成乙個 帶有乙個引數的函式, 求出平方返回

//此函式功能就是 對a求平方

intoperator()

(int a)

private:

int a;};

intmain()

參考智慧型指標章節

操作符過載

ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...

操作符過載

1.操作符是靜態方法,返回值表示操作結果,引數是運算元。2.操作符過載需要在過載的操作符前加上operator關鍵字。3.最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。以建立的分數類 fraction 中的 為例,該分數類中有兩個int型的私有屬性 分子 num...

過載操作符

1.過載操作符1.1 限制過載操作符具有以下限制 1 只有c 預定義的操作符集中的操作符才可以被過載 2 對於內建型別的操作符,它的預定義不能被改變,應不能為內建型別過載操作符,如,不能改變int型的操作符 的含義 3 也不能為內建的資料型別定義其它的操作符 4 只能過載類型別或列舉型別的操作符 5...