gpt4 book ai didi

c++ - 误解全局运算符重载规则

转载 作者:行者123 更新时间:2023-11-30 00:38:01 24 4
gpt4 key购买 nike

我找到了 URL下面说

 If an operator can be used as either a unary or a binary 
operator (&, *, +, and -), you can overload each use separately.

我在 Linux 中使用 g++,我尝试了以下方法,但它没有编译。

int operator+ (const int a,const int b){
std::cout << "MINE"<<std::endl;
return 0;
}

int main(){
char c='c';
std::cout << c+2 << std::endl;
}

错误说

error: ‘int operator+(int, int)’ must have an argument 
of class or enumerated type

我愿意尝试并看到整数提升规则的实际应用。

是我做错了什么,还是该 URL 仅对 MS 有效,还是我误解了促销规则?

最佳答案

错误消息间接地告诉您您需要了解的内容——您不允许重载仅作用于内置类型的运算符(二元或一元)。

对于用户定义的类型T,您可以分别重载二元+(例如通过T operator+(T lhs, T rhs))和一元+(对于例如 T operator+(T t))。您还可以定义 operator+(T lhs, int rhs),但您不能重载两个整数的加法。

关于c++ - 误解全局运算符重载规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11985701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com