临时变量的问题
#include <stdio.h>
class CTemp
{
public:
int a;
public:
CTemp(CTemp& t) //Copy Ctor!
{
printf("Copy Ctor!\n");
a = t.a;
};
CTemp& operator=(CTemp& t) //Assignment Copy Ctor!
{
printf("Assignment Copy Ctor!\n");
a = t.a;
return *this;
}
CTemp(int m = 0);
virtual ~CTemp(){};
};
CTemp::CTemp(int m) //Copy Ctor!
{
printf("Construct function!\n");
a = m;
printf("a = %d\n",a);
}
CTemp Double(CTemp& ts)
{
CTemp tmp;
tmp.a = ts.a*2;
return tmp;
}
//-------------Main函数-----------------
int main()
{
CTemp tm(10),sum;
printf("\n\n");
sum = Double(tm);
printf("\n\nsum.a = %d \n",sum.a);
}
g++编译有错误:
temp_object.cpp: In function `int main()':
temp_object.cpp:39: no match for `CTemp& = CTemp' operator
temp_object.cpp:13: candidates are: CTemp& CTemp::operator=(CTemp&)
我怎么也想不明白为什么会有这种错误,求指导