C++一元运算符的构造函数重载和友元函数重载

来源:互联网 发布:win10虚拟机装mac 编辑:程序博客网 时间:2024/05/20 07:14
/*======================================================================模板:1、模板函数 <-----> 模板类<span style="white-space:pre"></span>       |               v          标准模板类2、友元函数友元类3、静态成员函数静态数据成员4、运算符重载========================================================================运算符重载一元运算符重载负号的重载成员函数重载友元函数重载++符号的重载=======================================================================*/#include <iostream>using namespace std;class Coordinate{public://声明友元函数重载friend Coordinate *operator-(Coordinate &c);Coordinate(int x, int y){m_iX = x;m_iY = y;}//成员函数的重载负号Coordinate* operator-()//隐形的this指针一元运算 不传入参数{m_iX = -m_iX;m_iY = -m_iY;return this;//返回对象}//前置++运算符成员函数重载Coordinate* operator++()//隐形的this指针一元运算 不传入参数{++m_iX;++m_iY;return this;//返回对象}//后置++运算符成员函数重载Coordinate operator++(int)//隐形的this指针一元运算 不传入参数但是为了区分前置++ 加入int作为标志  //返回一个对象{Coordinate old(this->m_iX,this->m_iY);++m_iX;++m_iY;return old;//返回对象}void print(){cout << m_iX << "" << m_iY << endl;}private:int m_iX;int m_iY;};//友元函数重载Coordinate *operator-(Coordinate &coor)//传入参数 和返回参数都可以用 指针或者引用 {coor.m_iX= -coor.m_iX;coor.m_iY= -coor.m_iY;return &coor;}int main(){Coordinate coor(1, 2);++coor;//调用成员函数重载operator-(coor)coor++;//operatoe++(0)operator-(coor);//调用友元函数重载coor.print();}

0 0
原创粉丝点击