對於運算子過載總的來說有3點需要注意
1. c++不允許創造新的運算子
2.不可過載的運算子有: . .* :: ?:。(?:是三元運算子)
3.類成員函式和全域性函式的運算子過載的比較
個人認為第三點最為重要,下面就開始著重研究類成員函式和全域性函式的運算子過載
1.必須作為成元函式進行過載的運算子
如果要過載(),,->或者任何賦值運算子, 運算子過載必須宣告為類的成員函式。
2.流插入運算子和流提取運算子一定要作為全域性函式過載
因為《或》左邊的運算元的型別是ostream&或istream&,而右邊是使用者自定義類的物件,則要用全域性函式過載。
3.全域性函式過載與有元函式過載
如果要呼叫類中的private資料,或者出於效能方面的考慮則要用有元函式過載。>>或《最好要用友元函式過載。
4.可交換的運算子
例如+運算子,這裡要求加法運算有交換性。如果加法運算子作為成員函式或有元函式過載,則類的物件必須只能夠出現在一邊。所以最好用全域性函式過載。
例一: 過載輸入輸出
//phonenumber.h
#ifndef phnoenumber_h
#define phonenumber_h
#include
#include
using namespace std;
class phonenumber
;#endif
//phonenumber.cpp
#include "phonenumber.h"
ostream &operator<<(ostream &output, const phonenumber &number)
//run.cpp
#include "phonenumber.h"
void main()
以上的例子,並沒有修改c++的標準輸入輸出類庫,就能把全新的使用者自定義型別的輸入輸出特性新增到c++中。這是c++程式語言可擴充套件性的又乙個例證。
C 學習 運算子過載
同函式過載一樣,算數操作符過載能夠帶給我們操作不同資料型別的方法,包括你自己定義的類。我們日常最常用的就是加 減 乘 除,而它們的性質又有些相似。所以,它們的運算子實現方式也有些相似。共有三種實現方式 首先,我們介紹怎樣使用友鄰函式定義操作符過載。看下面的 include class cents 使...
c 學習運算子過載
運算子過載 1 實驗目的 學習掌握重定義與類有關的運算子。把握過載運算子的時機。學習掌握把乙個類物件轉換為另乙個類物件。學習掌握過載為成員與友元的區別及其帶引數的情況。學習掌握值返回與引用返回的區別及應用時機。2 實驗內容 1 生成乙個表示複數的類fs。複數的實部sb和虛部xb作為其資料成員。提供成...
C 學習 運算子過載
運算子過載的本質 過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。大多數的過載運算子可被定義為普通的非成員函式或者被定義為類成員函式。非成員函式 需要為每次操作傳遞兩個引數 box oper...