- 對(duì)于一個(gè)運(yùn)算符函數(shù)來(lái)說(shuō),它或者是類(lèi)的成員,或者至少是含有一個(gè)類(lèi)型的對(duì)象。
- 對(duì)箭頭運(yùn)算符來(lái)說(shuō),不
有不能重載的運(yùn)算符?
有滴,請(qǐng)看以下重載規(guī)則:
- C++不允許用戶定義新的運(yùn)算符,只能重載已經(jīng)有的重載運(yùn)算符。
- 不能重載的運(yùn)算符有5個(gè)
- . 訪問(wèn)成員
- .* 指針訪問(wèn)類(lèi)成員運(yùn)算符
- :: 域運(yùn)算符
- sizeof 長(zhǎng)度運(yùn)算符
- ? 條件運(yùn)算符

不能重載的運(yùn)算符

小總結(jié)
不知道你看到了嗎,這兒沒(méi)寫(xiě)sizeof()?
Sizeof cannot be overloaded because built-in operations, such as incrementing a pointer into an array implicitly depends on it. Consider:
X a[10];
X* p = &a[3];
X* q = &a[3];
p++; // p points to a[4]
// thus the integer value of p must be
// sizeof(X) larger than the integer value of q
來(lái)了一個(gè)新成員 typeid
- 重載不能改變操作符所操作的個(gè)數(shù)的個(gè)數(shù),(ps:感覺(jué)就像自定義拼圖,不能多不能少)
- 重載運(yùn)算符不能改變操作符的優(yōu)先級(jí)別(這也等級(jí)制度)
- 重載運(yùn)算符不能改變操作符的結(jié)合性
重要的東東:

常用的
操作符的重載方式?
- 普通重載
- 成員函數(shù)重載 賦值== 下標(biāo)[] 調(diào)用() 成員指向->
- 友元函數(shù)重載 需要訪問(wèn)類(lèi)中的private數(shù)據(jù)時(shí)
重載prefix 和postfix
C++ 約定:在自增(自減)運(yùn)算符重載函數(shù)中,增加一個(gè)int型參數(shù),就是后置自增(自減)
#include <iostream>
class example
{
public:
int a;
int b;
example operator+(const example &obj);
void operator=(const example &obj2);
private:
};
example example::operator+ (const example &obj)
{
example tmp_obj = *this;
tmp_obj.a = tmp_obj.a + obj.a;
tmp_obj.b = tmp_obj.b + obj.b;
return tmp_obj;
}
void example::operator=(const example &obj2)
{
(*this).a = obj2.a;
(*this).b = obj2.b;
return;
}
int main() {
example obj1, obj2, obj3;
obj1.a = 1;
obj1.b = 2;
obj2.a = 2;
obj2.b = 3;
obj3.a = 2;
obj3.b = 6;
obj3 = obj1 + obj2;
std::cout << obj3.a << " " << obj3.b << std::endl;
system("pause");
return 0;
}
輸出:
3 5
ps(實(shí)現(xiàn)對(duì)象的對(duì)應(yīng)成員相加,簡(jiǎn)直是矩陣相加啊~~)
[stackoverflow refrence ](Operator overloading)
Operator Overloading
看來(lái)stackoverflow 的干貨很棒