C++中重载加减乘除等运算符的纯虚函数中的返回类型怎么定义??运算符中参数怎么写??

如题所述

纯虚函数表示基类是一个抽象类(ABC),因此要在派生类中具体实现运算符重载,由于运算符在运算过程中会生成一个临时对象;如:
class Vector
{
private:
int x;
int y;
};
假设要在类中实现一个+运算符的重载:
Vector Vector::operator+(const Vector & b) const
{
return Vector(x+b.x, y+b.y);
}
假设有 Vector v1,v2;
Vector v = v1 + v2;
上述语句中:Vector::operator+()将计算v1 和v2 的和,而这两者之和是一个临时对象,没有指向该两者和临时对象的引用,因此,返回值应为对象本身;虽然存在调用复制构造函数来创建返回对象的开销,这是无法避免的;

对于运算符中的参数一般采取对象引用类型,这样可以减少默认复制函数的开销,提高效率。当然如果为了防止运算符中改变参数,将其设为const类型就可以了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-14
//设计一个学生类student,包括姓名和三门课程成绩,
//利用重载运算符”+“将所有学生的成绩相加放在一个对象中,再对该对象求各门课程的平均分。
class student
{
private:
float scr1;
float scr2;
float scr3;
static float total;
char name[20];
public:
student()
{
}
student(char A[],float x,float y,float z)
{
strcpy(name,A);
scr1=x;
scr2=y;
scr3=z;
total+=x+y+z;
}

student operator +(const student &pt1)
{
student temp;
temp.scr1=this->scr1+pt1.scr1;
temp.scr2=this->scr2+pt1.scr2;
temp.scr3=this->scr3+pt1.scr3;
return temp;
}

void print()
{
cout<<"averge score is:\n";
cout<<scr1/3<<"\t"<<scr2/3<<"\t"<<scr3/3<<endl;
cout<<"all score is:"<<total<<endl;
}
};
float student::total=0;
void main()
{
student st[3]={ student("dmm",68,75,86),
student("tianle",89,78,95),
student("women",65,45,35)};
student avg;
avg=st[0]+(st[1]+st[2]);
avg.print();
}

一段类似的代码,看看吧
第2个回答  2013-04-13
返回类型取决于运算符
一般都是返回自己的引用。return *this.返回类型 X& 。参数一般也是const X&
X是你的类。
第3个回答  2013-04-14
你想怎么定义就怎么定义。看需求
相似回答