簡體   English   中英

C ++:使用構造函數實現運算符

[英]c++: implement operators using constructors

我已經在C ++中創建了一個類,該類具有unsigned shortsigned short`const char*`const char* 。我想為所有這些類重載運算符。 最有效的方法是什么? 我真的需要為每個運算符和每種類型編寫一個函數,還是可以使用一些魔術?

我想重載新類型的變量可以位於其他類型的左側或右側的情況。 另外,我想調整一些類型,例如,如果我添加float,double或Float,則新類型Int必須返回新類型Float。 如果沒有為每種類型手動編寫函數,這是否有可能?

提前致謝!

對於問題的第二部分,您可以返回調整后的類型:

template <typename T>
class Class
{
    T data;
public:

    Class (const T& data) : data(data) {}

    template <typename U>
    auto operator+(const U &x) -> typename std::common_type<T, const U&>::type
//  ^^^^                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    {
        return data + x;
    }
};

int main()
{
    Class<int> obj(10);

    double x = obj + 12.5;
}

我希望我能很好地理解你的問題

暫無
暫無

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

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