有关const的一个有关问题
有关const的一个问题//当const 去掉的时候,位置(1)的调用报错,而含有const的时候,//则不会void func(const
有关const的一个问题
//当const 去掉的时候,位置(1)的调用报错,而含有const的时候,
//则不会
void func(const double& a)
{
}
int main()
{
int a = 3;
func(a);//.................(1)
}
const C++
[解决办法]这个问题好像,以前在论坛里面有人问过。
非const引用只能绑定到与该引用同类型的对象。
const引用则可以绑定到不同但相关的类型的对象或绑定到右值(作为行参的时候有效)
[解决办法]《C++ Primer》
[解决办法]函数调用的过程中会创建临时变量,类型为 double,临时变量只能绑定到 const 引用上,就这样。
[解决办法]首先parameter(形参)是一个double,argument(实参)是一个int
根据调用规则会隐式生成一个临时变量double tmp(a),然后把tmp传给函数
这里的tmp是一个右值,即不允许对其赋值。
const &是标准的右值引用,所以没有问题。
没有const的&是左值引用,用户可以修改传入参数,所以c++不允许右值绑定到左值引用上,造成tmp无法传递给函数,调用失败。
c++11中引入了右值引用&&,所以写成下述形式应该也可以
void func(double&& a)
{
}