【发布时间】:2015-10-06 15:39:19
【问题描述】:
我的朋友有一些关于运算符重载的代码。代码如下:
class Bar
{
public:
int num;
Bar(int n){
num = n;
}
};
class FooPa
{
// Consider it empty
};
class Foo : public FooPa
{
Bar *b1, *b2;
Bar operator + ( )// **I don't understand this function, how can I use it?**
{
int value= b1->num +b2->num;
Bar * b = new Bar(value);
return (*b);
}
};
我不明白函数“Bar operator +()”。他想将“b1.num”和“b2.num”数学相加,然后返回一个新对象。是否有意义?这个新的运算符“+”怎么用,谁能举个例子?
【问题讨论】:
-
operator+ 的原型错误。你不能使用它。这不是提到内存泄漏和一切。
-
来自没有经验的程序员的否决投票问题是 SO 的新时尚。 :P
-
@SergeyA 它是一个一元 + 运算符重载,除了内存泄漏之外很好。
-
@a4anurag:“很好”?从未初始化的指针中读取呢?即使实现是正确的,您认为一元加号会使自定义类型更易于使用吗?
-
@ChristianHackl 这些指针初始化是 Foo 的构造函数未重载的 + 运算符的工作。此外,似乎 OP 需要澄清函数签名和较少的实现。