运算符重载
1、运算符重载,把运算符重新定义行的规则
2、几乎所有的运算符都可以被重载,出以下:. :: ?: sizeof这些是不能做重载的运算符
3、运算符重载基本上出现再类中和结构中
4、运算符重载要满足运算符原来的规则
5、运算符理解为函数的一个表现
如何进行运算符重载
1、运输符重载需要考虑:考虑返回值,两个数相加,不可能返回地址也不能返回名义个操作数,只能返回一个新的变量,只能用于拷贝。
2、operator<(需要重载的符号)>来表示函数名,参数列表,用为通过对象的成员函数来实现运算符重载,所以this算一个参,只能是第一个参
3、给运算符重载,其实是做一些直接用运算符做不到的操作,对于运算符重载,可能会把这个运算符重载成其他的操作(不输入这个运算符的操作,比如+,结果操作不是+),所以对于运算符重载要认真使用
4、对于运算符的重载的调用,可以直接用运算符,也可以显示调用(运算符重载是属于类的,不是友元)
class A
{
public:
A(){ a = 0; }
A(int b)
{
a = b;
}
int operator+(const A &p)//重载+号
{
return this->a + p.a;
}
A operator-(const int a)//重载-号
{
A myA;
myA.a = this->a - a;
return myA;
}
void add(const int a)
{
this->a = this->a + a;
}
//前置++
A& operator++()//重载前置++
{
this->a++;
return *this; //*this 当前对象
}
//后置++
A operator++(int)//就只是用int来区分前后++而已 重载后置++
{
A temp = *this;//先保存当前数据,用来作为返回对象
this->a++;//自增
return temp;
}
friend ostream& operator << (ostream &cout, A &myA);
friend istream& operator >> (istream &cin, A &myA);
int a;
};
ostream& operator << (ostream &cout, A &myA)
{
cout << myA.a;
return cout;
}
istream& operator >> (istream &cin, A &myA)
{
cin >> myA.a;
return cin;
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!