64,282
社区成员
发帖
与我相关
我的任务
分享
Time& operator =(Time& t){ hour=t.hour;minute=t.minute;second=t.second;cout < <"赋值重载函数被调用!" < <endl;return *this;}
#include <iostream>
using namespace std;
class Time
{
public:
Time(){cout <<"默认构造函数被调用!" <<endl;}
Time(int h,int m,int s):hour(h),minute(m),second(s){cout <<"带形参的构造函数被调用!" <<endl;}
Time(const Time& t):hour(t.hour),minute(t.minute),second(t.second){cout <<"复制构造函数被调用!" <<endl;}
Time operator =(Time& t){ hour=t.hour;minute=t.minute;second=t.second;cout <<"赋值重载函数被调用!" <<endl;return *this;}
~Time(){cout <<"析构函数被调用!" <<endl;}
private:
int hour;
int minute;
int second;
};
int main()
{
Time t=Time(2,3,4);
cout <<endl;
Time t2;
cout <<endl;
t2=t;
cout <<endl;
return 0;
}
Time& operator =(Time& t) {...} //返回Time&
Time operator =(Time& t){ hour=t.hour;minute=t.minute;second=t.second;cout < <"赋值重载函数被调用!" < <endl;return *this;}
这个返回的是一个非引用对象,这样就多了一次复制构造函数的调用了.
如果改成这样,返回引用
Time& operator =(Time& t){ hour=t.hour;minute=t.minute;second=t.second;cout < <"赋值重载函数被调用!" < <endl;return *this;}
则就只有 赋值重载函数被调用!
Time& operator =(const Time& t)
{
hour=t.hour;
minute=t.minute;
second=t.second;
cout <<"赋值重载函数被调用!" <<endl;
return *this;
}