如果把Time& add();和Time& Time::add()改成Time add();和Time Time::add()结果就变成第二个了,为什么呢?
#include<iostream>
using namespace std;
class Time{
int hour;
int minute;
int second;
public:
Time(int h=0,int m=0,int s=0)
{
hour=h;
minute=m;
second=s;
{cout<<"构造函数!"<<endl;}
}
Time& add();
void show();
~Time(){cout<<"析构函数!"<<endl;}
};
Time& Time::add(){
second++;
if(second>=60){
second-=60;
minute++;
if(minute>=60){
minute-=60;
hour=(hour+1)%24;
}
}
return (*this);
}
void Time::show()
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
int main(){
Time time(11,59,58);
for(int i=0;i<4;i++)
{
time.add();
time.show();
}
return 0;
}
1.
构造函数!
11:59:59
12:0:0
12:0:1
12:0:2
析构函数!
2.
构造函数!
析构函数!
11:59:59
析构函数!
12:0:0
析构函数!
12:0:1
析构函数!
12:0:2
析构函数!
引用类似于指针,是不会新产生对象的,自然也就不会有析构