在C++ primer 5th中,第6章的练习6.39(a)中,关于重载和const形参的学习心得. 练习6.39:说明在下面的每组声明中第二条声明语句是何含义.如果有非法的声明,请指出来. (a) int calc(int, int); int calc(const int, const int); 这题第一眼看下来,肯定是错的啊.这一节课前面刚讲了,一个拥有顶层const的形参无法和另一个没有顶层const的形参区分开来.妥妥的错了. 然后我看了GitHub上的答案,合法??发现答案说的…
当形参是const时,必须要注意关于顶层const的讨论.如前所述,顶层const的作用于对象本身: const int ci=42; //不能改变ci,const是顶层的 int i=ci: //正确:当拷贝ci时,忽略了它的顶层const int *const p=&i; //const是顶层的,不能给p赋值 *p=0; //正确:通过p改变对象的内容是允许的,现在i变成了0 和其他初始化过程一样,当用实参初始化形参时会忽略掉顶层const.换句话说,形参的顶层const被忽略…