第八讲 操作符重载—————面向对象高级开发

1 操作符重载(operate overloading)

分类:成员函数/非成员函数。

区别:只有非静态成员函数中有this指针。

使用非成员函数的情况:

  • 1,符合以往的编程习惯;
    例如,如果使用内部操作符函数,则会造成使用方式与以往不同的情况:
    因为不能更改已有cout的成员操作符号函数,因此只能创建一个非成员函数。
#include <iostream>
#include <ostream>

class A{
public:
    A(int _data = 0):m_data(_data){}//默认实参 default argument
    std::ostream&operator<<(std::ostream& os){
        os<<this->m_data;
        return os;
    }
    void printData()const { std::cout<<m_data<<std::endl;}
    int getData()const { return m_data;}
private:
    int m_data;
};

std::ostream& operator<<(std::ostream& os, A& a){//为了可以使使用多个<<符号,因此返回类型为ostream
    os<<a.getData();
    return  os;
}


int main(){
    A a(2);
    //使用成员函数
    a.operator<<(std::cout)<<std::endl;//与下面等同
    a<<std::cout<<std::endl;
    //使用非成员函数
    std::cout<<a<<std::endl;
    return 0;
}
相关推荐
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页