相关疑难解决方法(0)

C++同一运算符的多个运算符重载

我知道我可以通过生成代码轻松地回答这个问题并查看它是否编译.但由于我找不到类似的问题,我认为这是值得分享的知识.假设我正在为MyClass重载+运算符.我可以多次超载吗?不同类型的不同过载.像这样:

class MyClass{
...
inline const MyClass operator+(const MyClass &addend) const {
    cout<<"Adding MyClass+MyClass"<<endl;
    ...//Code for adding MyClass with MyClass
}
inline const MyClass operator+(const int &addend) const {
    cout<<"Adding MyClass+int"<<endl;
    ...//Code for adding MyClass with int
}
...
};
int main(){
    MyClass c1;
    MyClass c2;
    MyClass c3 = c1 + c2; 
    MyClass c4 = c1 + 5;
}
/*Output should be:
  Adding MyClass+MyClass
  Adding MyClass+in*/
Run Code Online (Sandbox Code Playgroud)

我想这样做的原因是我正在构建一个我希望尽可能优化的类.性能是我最关心的问题.因此,在操作员+重载功能内部铸造和使用开关盒不是一种选择.我注意到,我把内插的重载都做了.让我们假设编译器确实内联我的重载,然后在编译时预先确定哪个代码将运行,并且我将调用保存到一个函数(通过内联)+一个复杂的开关案例场景(实际上,将会有+运算符的5+重载,但我仍然能够使用基本算术运算符轻松编写读取代码.那么,我会得到理想的行为吗?

c++ operator-overloading operators

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×1

operator-overloading ×1

operators ×1