運算子過載的概念
操作符過載的一般規則
運算子過載方法
運算子過載有兩個方法:乙個是利用全域性函式進行運算子過載;另一種是利用成員函式進行運算子過載。
利用成員函式
為什麼要進行運算子過載?
我們知道,資料型別開闢了記憶體用於存放變數和提供了基於變數值的運算。類定義了物件,提供了一種新的資料儲存方法。所以要提供相應的對資料物件的操作,這就是運算子過載。
運算子過載的練習
過載複數的加減法
過載雙目運算子: 複數+=
和-=
操作符
過載單目運算子: 前++
和 前--
過載單目運算子: 後++
和 後--
過載輸入輸出操作符
過載賦值操作符
#define _crt_secure_no_warnings
#include
using
namespace
std;
/*定義複數類complex 實現
1.基本運算子+ - 過載
2.雙目運算子 += -=過載
3.單目運算子 前++ 前-- 後++ 後--的過載
4.輸入輸出運算子過載
*/class complex
/*帶引數的建構函式*/
complex(double m_real, double m_virtual)
/*運算子過載: + - */
complex operator +(complex &c1)
complex operator -(complex &c1)
/*運算子過載: += 和 -= */
/*實現 x1+=x2+=x3 這樣的連加功能 */
complex & operator += (complex &c1)
complex& operator -=(complex & c1)
/*運算子過載: 前++和前--*/
complex & operator++ ()
complex & operator-- ()
/*運算子過載: 後++和後--*/
const complex operator++ (int)
const complex operator-- (int)
};/*全域性函式部分*/
/*過載輸出運算子*/
/*輸入輸出運算子過載為了保持形式和標準輸入輸出一致,只能使用全域性函式來過載左移運算子*/
void
operator
<<(ostream & os, complex &c)
else
if (c.m_virtual == 0)
else
}/*過載輸入運算子*/
/*輸入輸出運算子過載為了保持形式和標準輸入輸出一致,只能使用全域性函式來過載左移運算子*/
void
operator>>(istream & is, complex & c)
/*定義student類實現
5.賦值運算子過載
*/class student
student(const student& s)
~student()
this->id = -1;
}student& operator = (const student& s)//先釋放原有的堆記憶體空間
this->id = s.id;
int len = strlen(s.name) + 1;
this->name = new
char[len];
strcpy(this->name, s.name);
return *this;
}};void
operator
<<(ostream & os, student &s)
/*測試模組部分*/
void test01()/*測試複數的加法和減法功能,以及過載輸出的運算子*/
void test02()/*實現 連+= 和 連-= 功能*/
void test03()/*實現 前連++ 和 前連-- 功能*/
void test04()/*實現 後++ 和 後-- 功能*/
void test05()/*過載輸入輸出運算子*/
void test06()
int main(void)
C 6中NULL條件運算子
早期版本的c 更新介紹了可為 null 的型別和 null 合併運算子的概念,在處理可以為 null 值的值時減少樣本 量。c 6將繼續此主題,其中包含 null 條件運算子 當在表示式的右側的物件上使用時,如果物件不 null,則為 null 條件運算子將返回成員值,否則 null var ss ...
C 6 操作符過載
過載語法 返回值型別 operator 操作符 引數列表 必須至少乙個引數是類,否則編譯器不能分清是不是過載的操作符 對於二元操作符函式為某類的成員函式的時候,只能顯式宣告乙個形引數作為右運算元,左運算元是這個類的物件 對於一元操作符函式為某類的成員函式的時候就不需要引數了。本來是幾元操作符,過載以...
C 運算子過載 過載特殊運算子
賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...