運算子過載

2021-07-13 21:59:36 字數 2787 閱讀 1682

運算子過載

2016 6 21

this:每個物件預設有乙個指標,指標指向了物件本身

a.print();

作用:1.成員變數和形參同名:this->x=x;

2.函式鏈 a.setx(10).sety(20).setradius(30);

**static: c靜態,c++(靜態成員變數、靜態成員函式)

c++中靜態成員不屬於 某個物件,記憶體中只有乙份記憶體位址,屬於整個類**

靜態成員變數初始化:普通函式形式

int circle::num=10;

**靜態成員函式:靜態函式只能呼叫、訪問靜態成員(變數。函式)

呼叫:circle::靜態成員函式名稱**

friend:友元函式 友元類

可以直接訪問私有成員

今天的內容

操作符過載:操作符操作自定義型別運算元(使用量不大)

**注意:

1.只能過載已經存在的操作符(+ - * /)

2、過載後運算元 數量不變(4+5)

3、至少有乙個運算元是使用者自定義型別 //int+ int error

4.過載後優先順序不變**

operator:要過載的操作符是……

操作符過載兩種形式:friend、 成員函式

如果函式實現在宣告中完成,這個函式是乙個內聯函式(不要寫過於複雜的語句 eg:if,**不要過長,函式實現快,但增加記憶體使用

#include 

using

namespace

std;

class point

void print();

private:

float x;

float y;

};inline

void point::print()

//當乙個物件作為成員函式的引數傳遞,在函式內是可以訪問其私有成員的

point point:: operator-(const point& p1)

point point:: operator*(const point& p1)

point point:: operator/(const point& p1)

int x=p1.x/this->x;

int y=p1.y/this->y;

return point(x, y);

}int main(int argc, const

char * argv)

、<<、>>、==、>、+=過載

#include 

using

namespace

std;

class point

float getx();

float gety();

void print();

private:

float x;

float y;

};//下標操作符過載只能用成員函式形式 (只能是成員函式形式運算子過載)

class text

//非const物件進行呼叫

int& operator(int index)

friend ostream& operator

<<(ostream& out,const text &t)

private:

intarray[20];

};float point:: getx()

float point:: gety()

void point:: print();

circle::circle(float a,float b,float r):p(a,b)

void circle::print()

/*在point類的基礎上寫乙個circle類,使用組合,給circle類新增輸出操作符過載*/

ostream& operator

<<(ostream& out,const circle &c)

/*cin:輸入操作符過載*/

istream& operator>>(istream& in,point &q)

point operator+=( const point& p1,const point &p2)

intoperator>( const point& p1,const point &p2)

else

return n;

}int

operator==( const point& p1,const point &p2)

int main(int argc, const

char * argv)

void print();

private:

float x;

float y;

};inline

void point::print()

//當乙個物件作為成員函式的引數傳遞,在函式內是可以訪問其私有成員的

point point:: operator-(const point& p1)

point point:: operator*(const point& p1)

point point:: operator/(const point& p1)

int x=p1.x/this->x;

int y=p1.y/this->y;

return point(x, y);

}int main(int argc, const

char * argv)

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載

c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...