c++中什么时候才重载运算符

如题所述

当对象和对象之间的运算用运算符的时候能更清晰更简洁更符合习惯的时候,才用重载运算符,而且不能从直觉上违反这个运算符的本身含义。
比如输入输出cin和cout用到的>>和<<运算符,使用起来很方便,也省去了写函数名的麻烦
比如复数、大整数、矩阵的数学运算,用符号+-*/肯定比使用函数名要更贴切
比如字符串的拼接,使用加号+比较自然,也没有什么歧义的地方,但要给字符串设计一个减号-,那么有可能是想删除子字符串,那么是删除一个函数所有的呢,这就有些复杂了,所以不适合这么使用。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-15
用到类运算的时候就要用重载运算符

class A
{
int a,b;
char *name;
}
A a;

A b;
c=(a+b)
就要用到重载,运算符+和=号追问

student(string n="no name",int ssid=0):id(ssid),name(n){}这个语句中的:后面是什么意思

追答

相当于id=ssid;
name=n;

第2个回答  2013-12-15
一般是在,需要对非基本类型 (例如自定义的类)对象,做加减乘除等运算时候,需要针对这个类做运算符重载。

class myclass
{
public:
int m_iA;
int m_iB;
myclass( int a, int b)
{
m_iA = a; m_iB = b;
}

myclass operator +(myclass &c1, myclass&c2 )
{
return myclass(c1.m_iA +c2.m_iA,c1.m_iB+c2.m_iB );
}
}

这样就可以
myclass o1, o2, o3;
o1.m_iA = 8;
o1.m_iB = 7;

o2.m_iA = 3;
o2.m_iB = 2;

o3 = o1 + o2;
printf( "%d, %d" , o3.m_iA, o3.m_iB );
// 11, 9
相似回答