四小點:
1.=,[ ],( ),->這四個操作符過載必須定義為類成員函式。
2.復合賦值操作符過載通常應定義為類成員函式。復合賦值操作符如*=,+=等。但是不一定得這麼做。
3.改變物件狀態或者與給定物件聯絡緊密的操作符,如++,---,*等,通常定義為類成員函式。
4.對稱操作符,如算術,相等,關係,位操作符,最好定義成普通非成員函式。
下面是自己n年之前寫過的乙個3d類:
#include using namespace std;
class vector3
vector3(const vector3 &rhs)
vector3& operator =(const vector3 &rhs)
return *this;
} void zero()
vector3 operator - () const
vector3& operator += (const vector3 &rhs)
vector3& operator -= (const vector3 &rhs)
vector3& operator *= (double a)
vector3& operator /= (double a)
void normalize() //標準化 }
void print() const };
bool operator ==(const vector3 &lhs, const vector3 &rhs)
bool operator !=(const vector3 &lhs, const vector3 &rhs)
vector3 operator + (const vector3 &lhs, const vector3 &rhs)
vector3 operator - (const vector3 &lhs, const vector3 &rhs)
vector3 operator * (const vector3 &lhs, double a) //標量右乘
vector3 operator * (double a,const vector3 &rhs) //標量左乘
vector3 operator * (const vector3 &lhs, const vector3 &rhs) //點乘
vector3 crossproduce(const vector3 &lhs, const vector3 &rhs) //叉乘
double vectormag(const vector3 &a) //求模
double distance(const vector3 &lhs, const vector3 &rhs) //求距離
int main()
過載函式呼叫操作符
函式呼叫操作符?函式呼叫操作符是 因此此操作符的函式過載是operator 過載函式呼叫操作符的類物件稱為函式物件或仿函式,因此我們可以像使用函式名一樣使用物件名。先看乙個簡單的例子。過載了函式呼叫操作符的乙個類 class area 上面的類中,操作符函式計算乙個面積,它是兩個整數實參的乘積。為了...
C 函式過載操作符
c 可以對操作符 operator 進行過載,一般定義在類的成員函式中,以下面的 為例.class point 定義乙個類模板 建構函式 point 析構函式 過載算術操作符 類似 point operator const point other 過載關係操作符 類似 bool operator c...
操作符過載(複數類 陣列類 函式物件)
目錄 操作符過載與複數類 陣列操作符的過載 函式呼叫操作符 c 中的過載能夠以特殊形式的函式的擴充套件操作符的功能 通過operator關鍵字可以定義特殊的函式 operator的本質是通過函式過載操作符 type operator sign const type p1,const type p2 ...