C++
引用传递实参不能是常数,必须是变量
void function (int & n) { n ++; } int main () { int x; function (x); // ok function (2); // 不允许 }
如果像让引用传递不改变实参的值可以用常量解决这件事
void function (const int & ref) {
// 这样就可以不让引用的值发生改变但是不能进行赋值
//
int a;
ref = a; // 不允许
}- 函数体结束以后函数所占用的空间会被释放,注意如果将函数体内一个变量的地址返回出去,这样会出现野指针。
过载函数 具有相同的函数名,而具有不同的参数表 (参数个数、参数类型、参数顺序)的函数叫做过载函数,然而只有返回值不同是不可以的 (因为解析这个函数的时候只看参数表而不是返回值)。
比如
void p (int x) {
cout << x + 1 << endl;
}void p (double x) {
cout << x << endl;
}
// 这两个函数就可以是过载函数
过载函数解析的时候注意类型的匹配方式 匹配的只是参数表与函数的返回值无关- 精确匹配 (先进行)
- 提升匹配 (可以进行类型转化的)
如果函数的过载参数有两个及以上时 如果转化的方式有多种切不存在精准匹配,这样的话会出现错误
void f (double x,double y);
void f (int x,int y);
f (1.0,2) // error
f (1,1) // ok
f (1.0,1.0) // ok- 参数传递的规则和函数返回值的规则都与变量 / 常量的初始化的规则一直, 关键还是看类型 (int -> double int -> long long )
- 定义函数的目的之一是在不同场合多次使用它,如果一个函数的参数太多,那么表示这个函数的功能太复杂,下决心把它分成多个函数。