C 研發 核心篇 第四講 4 5 運算子過載

2021-10-19 09:00:39 字數 2373 閱讀 9033

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

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

class person ;

person(int a, int b)

//成員函式實現 + 號運算子過載

person operator+(const person& p)

public:

int m_a;

int m_b;

};//全域性函式實現 + 號運算子過載

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

//運算子過載 可以發生函式過載

person operator+(const person& p2, int val)

void test()

int main()

總結1:對於內建的資料型別的表示式的的運算子是不可能改變的

總結2:不要濫用運算子過載

作用:可以輸出自定義資料型別

class person 

//成員函式 實現不了 p << cout 不是我們想要的效果

//void operator<<(person& p)

private:

int m_a;

int m_b;

};//全域性函式實現左移過載

//ostream物件只能有乙個

ostream& operator<<(ostream& out, person& p)

void test()

int main()

總結:過載左移運算子配合友元可以實現輸出自定義資料型別

作用: 通過過載遞增運算子,實現自己的整型資料

class myinteger 

//前置++

myinteger& operator++()

//後置++

myinteger operator++(int)

private:

int m_num;

};ostream& operator<<(ostream& out, myinteger myint)

//前置++ 先++ 再返回

void test01()

//後置++ 先返回 再++

void test02()

int main()

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

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

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

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

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

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

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

示例:

class person

//過載賦值運算子

person& operator=(person &p)

//編譯器提供的**是淺拷貝

//m_age = p.m_age;

//提供深拷貝 解決淺拷貝的問題

m_age = new int(*p.m_age);

//返回自身

return *this;

} ~person() }

//年齡的指標

int *m_age;

};void test01()

int main()

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

示例:

class person

; bool operator==(person & p)

else

}bool operator!=(person & p)

else

}string m_name;

int m_age;

};void test01()

else

if (a != b)

else }

int main()

示例:

class myprint

};void test01()

class myadd

};void test02()

int main()

第四講 運算子

運算子的概念 運算子 於執 程式 運算,會針對 個以上運算元項 來進 運算。例如 2 3,其運算元是2和3,而運算子則是 運算子的分類 算術運算子 賦值運算子 較運算子 關係運算子 邏輯運算子 條件運算子 三元運算子 加法運算子 表現形式 減法運算子 表現形式 乘法運算子 表現形式 除法運算子 表現...

C 研發 核心篇 第四講 4 7 多型

4.7.1 多型的基本概念 多型是c 物件導向三大特性之一 多型分為兩類 靜態多型和動態多型區別 下面通過案例進行講解多型 class animal class cat public animal class dog public animal 我們希望傳入什麼物件,那麼就呼叫什麼物件的函式 如果函...

python入門第四講 比較運算子

比較運算子包括 建立乙個檔名為num.py的文件 1 print 請輸入三個數字 2 num1 int input num1 3 num2 int input num2 4 num3 int input num3 5 max num 0 6if num1 num2 若num1 num2 7 max ...