總結:
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 前置只需要返回結果,後置則需要儲存原值,以便返回未操作之前的結果.這個是需要注意的操作...