首页 > 试题广场 >

有以下类定义

[单选题]
有以下类定义
#include<iostream>
using namespace std;
class Clock{
public:
    Clock(int NewH=0, int NewM=0, int NewS=0){Hour=NewH; Minute=NewM;Second=NewS;}
    void ShowTime() {cout<<Hour<<":"<<Minute<<":"<<Second;}
    Clock  operator ++();
private:
    int Hour, Minute, Second;};
    Clock Clock::operator ++(){ 
        Second++;
        if(Second>=60){  
            Second=Second-60;
            Minute++;
            if(Minute>=60){
                Minute=Minute-60;
                Hour++;
                Hour=Hour%24;}}
        return ________;
    }
};

int main() {   
    Clock c1;
    (++c1).ShowTime();
    return 0;
}
请为横线处选择合适的程序()使得程序的运行结果是0:0:1。
  • c1
  • *this
  • Clock
  • this
选B。
return *this返回的是当前对象的克隆或者本身,return this返回当前对象的地址,这里很明显是返回当前对象。
c1是定义在主函数里面的对象,很明显不对。Clock是类名,也不对。
发表于 2019-12-02 21:21:11 回复(0)
运算符++重载,return *this表示返回使用++运算符的Clock类对象c1,再调用运算后的(*this).ShowTime(),即c1.ShowTime()显示时间
发表于 2019-10-14 13:54:54 回复(0)
return *this返回的是当前对象的克隆或者本身,return this返回当前对象的地址,这里很明显是返回当前对象。
c1是定义在主函数里面的对象,很明显不对。Clock是类名,也不对。

运算符++重载,return *this表示返回使用++运算符的Clock类对象c1,再调用运算后的(*this).ShowTime(),即c1.ShowTime()显示时间
发表于 2020-08-16 09:57:23 回复(0)
这题放到编译器上都编不过去,多了一个};写的什么jb
发表于 2023-10-19 11:57:54 回复(0)
我一看到这种题目就头痛,题目太长啦,有没有大佬能讲讲怎么去分析吗?
发表于 2020-07-09 16:48:39 回复(2)
return *this 返回对象,return this 返回的是地址
编辑于 2024-03-11 15:43:36 回复(0)
return c1  这个是在函数内,实参不可能进入函数内,要通过类成员改变实参。
发表于 2023-09-26 08:33:00 回复(0)
运算符重载++可以的定义可以放在类的私有里吗?这里的*this就是向外的一个接口吗?有人可以解惑吗?
发表于 2022-08-16 20:07:37 回复(0)
看错了
发表于 2020-06-20 17:41:00 回复(0)

注意看返回值类型为Clock,所以只能选B。
A是main函数中的局部变量,不对。
C是类型,不对。
D是Clock*类型,不对。

发表于 2020-06-10 21:05:20 回复(0)
操作符++重载
发表于 2019-10-09 21:37:57 回复(1)