gpt4 book ai didi

C++双向运算符,可能吗?

转载 作者:搜寻专家 更新时间:2023-10-30 23:56:50 24 4
gpt4 key购买 nike

比如我们有这个类:

class my_class
{
public:
friend my_class operator* (const my_class&, int a);
friend my_class operator* (int a, my_class&);
};

my_class operator* (int a, my_class&)
{
// do my_class * a
}

my_class operator* (int a, my_class&)
{
// do a * my_class
}

是否可以只让一个运算符(operator)*来完成这两个操作?

谢谢!

最佳答案

你不能那样做。但是,您可以实现一个并从另一个简单地调用它:

my_class operator *(const my_class &l, int r) {
// implement the actual operator here.
}

my_class operator *(int l, const my_class &r) {
return r * l;
}

(请注意,您不能将后一个函数作为类的一部分实现。您必须在外部执行。第一个函数可以作为实例方法实现,因为它的第一个参数是类类型。)

关于C++双向运算符,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26853264/

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