最近在调试一段代码发现几个问题:
class test
{
public:
testtest(){}
testtest(int a);
testtest(const testtest& c );
}
有某个函数如何下
void create(const test& a)
{
}
调用如下:
create(1) 这样使用编译通过了,而且会调用testtest(int a)的构造函数
然后我就像把create的const去掉试一下
create(test& a)结果编译错误
我就想加了const为什么会调用构造函数?
当然create(test a)这样肯定也是会调用构造函数的。之后我就猜想 函数参数const testest& c和testtest c是允许有临时变量产生因此允许调用构造函数。testtest& 只是想引用是不会调用构造函数的。
但是我又想const testets& 为什么要弄个临时变量呢,因为函数内对const引用改变 会有报错的,可能是为了安全吧,仅仅猜想,vs2008调试