C++ 运算符重载

操作者是C ++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将运算符=整体上视为一个函数名。

运算符重载,就是对已有运算符进行重新定义,以适应不同的数据类型。

运算符的目的是让语法更加简洁。

不能改变本来意思。

本质是一种函数调用,函数同一的名字叫operator。

可以写成全局或成员函数。全局双目运算符左面是第一个参数,右边是第二个参数。成员双目运算符左边是this,右边是第一个参数。

除了赋值号(=),其他运算符重载都可以被派生类继承。
对于++ --来说用占位符可以区分前置和后置递增、递减。

A& operator++() {
    this->a++;
    this->b++;
    return *this;
}
A operator++(int) { // int 占位参数 可以区分前置和后置递增
// 返回是值,不是引用
    A tmp = *this;
    ++(*this);
    return tmp;
}

C++ 默认赋值函数是值复制,可能导致堆内异常。

A& operator= (A& T) {
    // 先清除,再赋值,防止堆区内存重复释放
}

() 函数对象(仿函数):定义了调用操作符() 的类对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般。因此取名叫函数对象,它是一个类,不是一个函数。它的使用很灵活,常跟stl结合。

常规建议:

  • 所有一元运算符 -- 成员函数
  • = () [] -> ->* -- 必须是成员函数
  • += -= /= *= ^= &= != %= >>= <<= -- 成员函数
  • 其他二元运算符 -- 非成员

 

09-右移运算符重载_哔哩哔哩_bilibili

 

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