重载2

接重载1

将单目“++”运算符重载为成员函数。

前置单目运算符,重载函数没有形参,对于后置的单目运算符,重载函数需要一个int 形参

#include<iostream>

using namespace std;

class Clock{                                                                //时钟类定义

public:                  //外部接口

          Clock(int hour=0, int minute=0, int second=0);

          void showTime() const;

          Clock&operator++();    //前置运算符重载

          Clock&operator++(int);                                      //后置运算符重载

private:

          int hour ,minute,second;

};

Clock::Clock(int hour/*=0*/,int minute=/*0*/,int second=/*0*/){

       if(0<=hour&&hour<24&&0<=minute&&minute<60&&<=second&&second<60){

           this->hour=hour;

   this->minute=minute;

           this->second=second;

          }

         else

         cout<<"Time error!"<<end1;

}

void Clock::showTime() const{                                     //显示时间函数

  cout<<hour<<":"<<minute<<":"second<<end1;

}

Clock&Clock:;operator++(){                                         //前置运算符重载函数

second++;

if(second>=60){

    second-=60;

    minute++;

    if(minute>=60){

minute-=60;

hour=(hour+1)%24;

}

}

retrun *this;

}

Clock Clock::operator++(int){                                   //后置运算符重载

Clock old=*this;

++(*this);

return old;

}

int main (){

Clock myClock(23,59,59);

cout<<"First time output:";

myClock.showTime();

     cout<<"show myClock ++ :";

(myClock++).showTime();

cout<<"show ++myClock :";

(++myClock).showTime;

return 0;

}

7.运算符重载为非成员函数

(1)运算需要的所有操作数都需要通过函数形参来传递。如果需要访问运算符参数对象的私有成员,可以将该函数声明为类的友元函数。仅在函数依赖于类的私有成员或者保护成员时再这样做。如果不声明友元函数,函数的操作依赖于类的接口,接口不变函数不变。声明了友元函数,接口不变,私有成员变化时,函数也需要改变。

(2)双目运算oprd1 B oprd2,oprd1/oprd2只要有一个具有自定义类型,就可以将B重载为非成员函数。形参为oprd1/oprd2. 

单目运算 U oprd,其中oprd 具有自定义类型,就可以将U重载为非成员函数。

后置运算符--++。oprd++,其中oprd为自定义类型,就可以重载为非成员函数。函数的形参有两个,一个是oprd,一个是int形参。

8.成员函数和非成员函数两种重载形式对比

成员函数重载比较方便

重载操作符的第一个操作数不是可以更改的类型是。需要用非成员函数重载。

非成员函数重载,支持灵活的类型转换。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值