[英]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++
,該函數的第一個參數必須為class或enumeration-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.