簡體   English   中英

C ++指針:重載運算符++

[英]c++ pointer: overload operator++

我試圖找到有關指針的重載運算符++的任何內容,但沒有結果。

有我的代碼。

struct Item
{
    int amount;
    Item(int a){ this->amount = a; };
    Item& operator++()
    { 
       this->amount++; 
       return *this;
    };
};


int main()
{

    Item *I = new Item(5);

    ++*I;

    return 0;
}

是否有任何選項只能在main函數中編寫

++I;

(對不起我的英語)

只是不要使用指針(無論如何都不需要它):

Item I(5);
++I;

您可以手動編寫(如果您確實要使用指針)

I->operator++();

不,您不能重載指針類型的運算符。

在定義自己的operator++ ,該函數的第一個參數必須為classenumeration-type ,如C ++標准的[over.inc]p1中所指定:

用戶定義的函數operator++實現前綴和后綴++運算符。 如果此函數是沒有參數的成員函數,或者是具有類或枚舉類型的一個參數的非成員函數,則它將為該類型的對象定義前綴增量運算符++


但是我真的很想調用operator++而不必顯式編寫*ptr ...

您可以,但這不是最漂亮的代碼行:

ptr->operator++ (); // call member function `operator++`

注意 :不是執行Item *I = new Item (5); ++*I Item *I = new Item (5); ++*I ,考慮只使用Item I (5); ++I Item I (5); ++I ,無需在代碼段中使用指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM