您的位置:首页 > 编程语言 > C语言/C++

c++运算符重载

2016-09-27 23:55 218 查看
应用举例:

#include <iostream>
using namespace std;

class Coord
{
public:
Coord(int _x=0, int _y=0)
:x(_x), y(_y){}

//成员函数  单目运算符重载
Coord operator-()
{
Coord c;
c.x = -this->x;
c.y = -this->y;
return (c);
}

//友元函数  双目运算符重载
friend Coord operator+(Coord &k, Coord&j)
{
Coord i(0, 0);
i.x = k.x + j.x;
i.y = k.y + j.y;
return i;
}

//友元函数  流运算符重载
friend ostream& operator<<(ostream &os, Coord &c)
{
os << "[" << c.x << "," << c.y << "]";
return os;
}

friend istream& operator>>(istream&is, Coord&c)
{
is >> c.x;
is >> c.y;
return is;
}

private:
int x;
int y;

};

int main()
{
Coord a, b, c;
cin >> a >> b;
c = a + b;
cout << c << endl;
cout << -c << endl;
cout << -(-c) << endl;
system("pause");
return 0;
}

//VS2013编译通过


小结:

1.不可重载的运算符

. (成员访问运算符)

.* (成员指针访问运算符)

:: (域运算符)

sizeof (长度运算符)

?: (条件运算符)

2.只能重载为成员函数的运算符

= (赋值运算符)

[] (下标运算符)

() (函数运算符)

-> (间接成员访问)

->* (间接取值访问)

3.

【1】所有的单目运算符 一般用成员重载

【2】+= -= /= *= ^= &= != %= >>= <<=

一般用成员重载 (涉及到连续赋值)

【3】其他双目运算符 一般用 非成员

未完 待续>>>>>>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: