C++ primer学习笔记_6_函数---函数定义、参数传递

1、
习题参考:

6.14 举一个形参应该是引用类型的例子,再举一个形参不能是引用类型的例子。

答:

形参使用引用类型的情况:(1)避免拷贝传递大对象的时候,这里的string对象s;(2)当需要从函数内部返回值的时候

string::size_type find_char(const string &s,char c,string::size_type &occurs) 
{
	auto ret = s.size();	
	occurs = 0;
	for (decltype(ret) i = 0; i != s.size(); ++i){
		if (s[i] == c){
			if (ret == s.size()){
				ret = i;
			}
			++occurs;
		}
	}
	return ret;
}
形参不能使用引用类型的情况:


2、顶层const作用于对象本身

const int ci = 42; // 不能改变ci,const是顶层的
int i = ci; //正确:当拷贝ci时,忽略了它的顶层const
int * const p = &i; //const是顶层的,不能改变p的值
*p = 0;  //正确,通过p改变其指向的对象的值是允许的

当用实参初始化形参的时候会忽略掉顶层const。

void fcn(const int i)
{
        /* fcn can read but not write to i */
}
void fcn(int i)   // error: redefines fcn(int)
{
        /* ...   */
}

3、顶层const和底层const

顶层const:表示指针本身是一个常量;

底层const:表示指针所指的对象是一个常量。



原文地址:https://www.cnblogs.com/javaadu/p/11742639.html