运算符重载

运算符重载之后运算符的含义不变,不能把+符号,写成-运算。

运算符重载之后的优先级和结合性不变。

类关系运算符“ .”  指针运算符“ * ”  作用域运算符“ ::”三目运算符“?” 不能重载。

 

运算符重载有两种方式

1:非静态成员函数。

2:非成员函数(友元运算符)。

3:输入输出运算符只能用非成员函数(友元运算符)

 

 

1:非静态成员函数。

#include
using namespace std;
class A
{
public:
    A(int x,int y):x(x),y(y){}
    A operator+(A &c2)
    {
        return A(x+c2.x,y+c2.y);
    }

    void display()
    {
        cout<

2:非成员函数(友元运算符)。

#include
using namespace std;
class A
{
public:
    A(int x,int y):x(x),y(y){}
    friend  A operator+(A &c1,A&c2);
    void display()
    {
        cout<

前++,后++重载

#include
using namespace std;
class A
{
public:
    A(int x,int y):x(x),y(y){}
    A&operator++();
    A operator++(int);
    void display()
    {
        cout<

输入输出

#include
using namespace std;
class A
{
public:
    A(int x,int y):x(x),y(y){}
friend ostream &operator<<(ostream &os,const A &T);
friend istream &operator>>(istream &is,A&T);
private:
    int x;
    int y;

};
istream &operator>>(istream &is,A&T)
{
    is>>T.x>>T.y;
    return is;
}


ostream &operator<<(ostream &os, const A &T)
{
	os << T.x << endl;
	os << T.y << endl;

	return os;
}
int main()
{
  A c3(0,0);
  cin>>c3;
  cout<

 

你可能感兴趣的:(C++)