关于复制构造函数的一点疑惑
最近看到一段代码,代码大体如下:
#include <iostream>
using namespace std;
class myclass
{
public:
myclass (int i=0): ival(i){}
myclass ( myclass &c): ival(c.ival){}/*注意该复制构造函数的形参并没有声明为const*/
private:
int ival;
};
myclass fun(int i)
{
myclass c(i);
return c;
}
int main()
{
myclass c1=fun(1);
return 0;
}
这段代码在code::block和devc++中编译出错,在vs2010编译通过。如果赋值构造函数的形参声明为const则在上述三个编译器中编译都通过。对此我比较迷惑,c++primer中也并没说复制构造函数的形参必须为const,只是说“通常为const”。希望哪位达人能帮我解释下,在此谢过了。另,如何在上边发代码啊,就是那种关键字用颜色标记的那种。