適合過載操作

2021-06-25 08:24:02 字數 1080 閱讀 3872

所有的過載操作符,你見過到目前為止讓你定義的操作符的形參的型別,但引數的數目是固定的基於經營者的型別。例如,= =運算子總是有兩個引數,而不是總是乙個邏輯運算元。括號(())是乙個特別有趣的運算元,它可以讓你不同的型別和引數,它需要數!

有兩件事情要記住:第一,括號操作符必須為成員函式的實現。第二,在非類c++的,()運算子用於呼叫函式或寫表示式評估優先順序較高的。對運算子過載的情況下,在()操作符沒有-相反,它只是乙個正常的操作呼叫的函式(稱為operator())像其他過載操作符。

讓我們以乙個常見的例子,適合過載操作一看:

123

4567

891011

1213

class matrix

};

矩陣是線性代數的乙個重要組成部分,常被用來做幾何建模和三維計算機圖形的工作。在這種情況下,所有你需要知道的是,矩陣類是由乙個4雙打4的二維陣列。

在課上,過載的下標操作符,你知道我們可以過載運算子向私人的一維陣列提供直接訪問。然而,在這種情況下,我們希望獲得乙個私人的二維陣列。因為操作符只有乙個引數,足以讓我們指數的乙個二維陣列不。

然而,由於()運算子可以採取許多引數,我們想,我們可以宣告乙個版本的operator()接受兩個整數,用它來訪問我們的二維陣列。這裡是乙個例子:

123

4567

891011

1213

1415

1617

1819

2021

2223

24#include // for assert()

class matrix

double& operator()(const int ncol, const int nrow);};

double& matrix::operator()(const int ncol, const int nrow)

{ assert(ncol >= 0 && ncol < 4);

assert(nrow >= 0 && nrow < 4);

return addata[nrow][ncol];

操作符過載

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...