假设我有一堂课:
class MyIntegers
{
public:
MyIntegers(int sz); //allocate sz integers in _Data and do some expensive stuff
~MyIntegers(); //free array
int* _Data;
}
而这一小段代码:
int sz = 10;
MyIntegers a(sz), b(sz), c(sz);
for (int i=0; i<sz; i++)
{
c._Data[i] = a._Data[i] + b._Data[i];
}
是否可以重载三元operator+
以替换循环c=a+b
而不创建临时对象?
在我的情况下,重载operator=
andoperator+=
并写入c=a; c+=b;
以避免创建临时对象是不可接受的。