C Primer筆記13 運算子過載 總結

2021-09-08 13:04:32 字數 1493 閱讀 2462

總結:

1.不能過載的運算子: . 和 .* 和 ?: 和 ::  和 sizeof 和 typeid

2.過載運算子有兩種基本選擇: 類的成員函式或者友元函式, 建議規則例如以下:

運算子建議使用

全部一元運算子

成員函式

必須是成員函式

+= -= /= *= ^= &= != %= >>= <<= , 似乎帶等號的都在這裡了.

成員函式

全部其他二元運算子, 比如: –,+,*,/

友元函式

3.前幾篇中的例項,如今彙總person類的程式:

#include #include #include using namespace std;

class person

;person::person():age(0), name(null)

person::person(int n, const string &str):age(n), name(new string(str))

person::person(const person &n)

else }

person & person::operator=(const person &p)

string *tmp = new string(*p.name);

delete this->name;

this->name = tmp;

this->age = p.age;

cout << "operator =" << endl;

return *this;

}person::~person()

string person::getname()const

return string();

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

istream &operator>>(istream &in, person &p)

else

return in;

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

bool operator==(const person &p1, const person &p2)

return false;

}person & person::operator++()

person & person::operator--()

person & person::operator++(int)

person & person::operator--(int)

person * person::operator->()

person & person::operator*()

int main()

到此,運算子過載先告一段落,以後還會繼續**更深層次的問題。

C Primer筆記13 運算子過載 總結

總結 1.不能過載的運算子 和 和 和 和 sizeof 和 typeid 2.過載運算子有兩種基本選擇 類的成員函式或者友元函式,建議規則例如以下 運算子建議使用 全部一元運算子 成員函式 必須是成員函式 似乎帶等號的都在這裡了.成員函式 全部其他二元運算子,比如 友元函式 3.前幾篇中的例項,如...

c primer學習筆記 4 運算子

一元 算術 乘法 算術 加法 注意點 溢位問題,操作型別.關係和型別檢測 邏輯非,邏輯與,邏輯或 4.1賦值操作的右結合性 a b 0 4.2復合賦值操作符 4.3自增和自減操作符 分為前置和後置兩種形式 i和i 前置只需要返回結果,後置則需要儲存原值,以便返回未操作之前的結果.這個是需要注意的操作...

c primer學習筆記 4 運算子

一元 算術 乘法 算術 加法 注意點 溢位問題,操作型別.關係和型別檢測 邏輯非,邏輯與,邏輯或 4.1賦值操作的右結合性 a b 0 4.2復合賦值操作符 4.3自增和自減操作符 分為前置和後置兩種形式 i和i 前置只需要返回結果,後置則需要儲存原值,以便返回未操作之前的結果.這個是需要注意的操作...