C++ 操作符重載

  • 對(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ī)則

  1. C++不允許用戶定義新的運(yùn)算符,只能重載已經(jīng)有的重載運(yùn)算符。
  2. 不能重載的運(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

  1. 重載不能改變操作符所操作的個(gè)數(shù)的個(gè)數(shù),(ps:感覺(jué)就像自定義拼圖,不能多不能少)
  2. 重載運(yùn)算符不能改變操作符的優(yōu)先級(jí)別(這也等級(jí)制度)
  3. 重載運(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 的干貨很棒

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 定義 運(yùn)算符重載的 實(shí)質(zhì) 是 函數(shù)的重載 使用意義賦予操作符更多的意義,同一個(gè)運(yùn)算符,對(duì)不同類(lèi)型的操作數(shù),所發(fā)生的...
    第八區(qū)閱讀 474評(píng)論 0 0
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,663評(píng)論 1 51
  • C++運(yùn)算符重載-上篇 本章內(nèi)容:1. 運(yùn)算符重載的概述2. 重載算術(shù)運(yùn)算符3. 重載按位運(yùn)算符和二元邏輯運(yùn)算符4...
    Haley_2013閱讀 2,385評(píng)論 0 51
  • 一起名 二寶還沒(méi)有出生的時(shí)候,我做了一個(gè)夢(mèng),夢(mèng)見(jiàn)一個(gè)大眼睛,白生生皮膚的小姑娘對(duì)著我笑,我對(duì)老公說(shuō)“肯定是個(gè)女孩,...
    健的XUYU閱讀 510評(píng)論 2 1
  • 初學(xué)iOS的人可能都會(huì)對(duì)Autolayout抓狂,一更新控件就亂跑,總是有紅點(diǎn),控件問(wèn)題不能按照自己的想法固定在屏...
    小榮袁閱讀 326評(píng)論 3 1

友情鏈接更多精彩內(nèi)容