C++运算符重载

一、概念
赋予已有的运算符多重含义。

二、注意事项
(1)不能重载的运算符名
::.*.?:
(2)必须具有一个类类型(或枚举类型)操作数
(3)优先级和结合性是固定的
(4)不再具有短路求值特性
作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。这是这两个操作符的一个重要属性。

三、大多数都可定义为普通非成员函数或类的成员函数。
(1)一般将算术和关系操作符定义为非成员函数;
将赋值操作符定义为成员。
(2)当操作符定义为非成员时,通常将其设置为所操作类的友元。(因为通常会需要操作类的私有成员)

四、使用
(1)像内置的一样:
如:cout << a+b << endl;
(2)像普通函数一样:
如: cout << operator+(a,b ) ;

五、示例(下面只贴出了关键代码部分)
(1)单目运算符的重载1
operator ++ 作为友元的重载

class A
{
    int a, b;
public:
    A(int x, int y):a(x),b(y){}
    void disp();

    friend A& operator ++ (A&);
};

A& operator ++ (A& m)
{
    m.a ++;
    m.b ++;
    return m;
}

(2)单目运算符的重载2
operator ++ 作为成员函数的重载

class A
{
    int a, b;
public:
    A(int x, int y):a(x),b(y){}
    void disp();

    A& operator ++ ();
};

A& A::operator ++ ()
{
    a ++;
    b ++;
    return *this;
}

(3)双目运算符的重载1
operator + 作为友元的重载

class A
{
    int a, b;
public:
    A(int x, int y):a(x),b(y){}
    void disp();

    friend A operator + (const A &,const A &);
};

A operator + (const A& x, const A& y)
{
    int a = x.a + y.a;
    int b = x.b + y.b;

    return A(a,b);
}

(4)双目运算符的重载2
operator + 作为成员函数的重载

class A
{
    int a, b;
public:
    A(int x, int y):a(x),b(y){}
    void disp();

    A operator + (const A &);
};

A A::operator + (const A& x)
{
    return A(a+x.a, b+x.b);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值