簡體   English   中英

用c ++創建自己的運算符

[英]Create my own operator in c++

我知道有可能重載已經存在於c ++中的運算符來定義所需的行為,但是是否可以創建自己的運算符?

例如,創建一個返回容器大小的運算符#

template<typename T>
size_t operator#(const T& obj) { return obj.size(); }

vector<int> v(1024);
cout << #v; // prints 1024

不需要。您需要堅持解析器已經知道如何處理的運算符。 重載可以擴展表達式的含義 ,但語法是固定的。

不,這是不可能的。

無論如何,如果你把你的容器叫做“定義”,會發生什么?

您可以創建一個新類型(稱之為Foo ),然后創建一個Bar::operator Foo() ,將Bar轉換為Foo

那可能不是你想要的。

你不能自己做#操作員。 就像一個啟動器一樣,它在哪里適合(已經非常臃腫)的C ++優先級表? 它是從左到右還是從右到左相關聯? 你怎么去指定這些東西,還有更多?

創建一個品牌打擊新操作員有很多問題,語言根本不允許這樣做。

已經回答了,不! 您只能重載所有已知的運算符,順便說一下,您不能改變預定運算符的行為,那么您不能更改運算符'+'的行為,例如,對於int數據類型。 ;)

暫無
暫無

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

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