本文共 2255 字,大约阅读时间需要 7 分钟。
默认参数指的是当函数调用中省略了实参时自动使用的一个值。
例如 将void wow(int n)
设置成 n有默认值为1,则函数调用 wow()
就相当于 wow(1)
必须通过函数原型。由于编译器通过查看原型来了解函数所使用的参数数目,因此函数原型也必须将可能的默认参数告知程序。
int show(int n =1);
也就是说,要为某一个参数设置默认值。则必须为它右边的所有参数提供默认值。
int a(int n, int m =4, int j = 5); ----->这个是有效的int b(int n, int m = 5, int j);------>无效的int c(int n = 1, int m = 2, int j = 3)---->有效的
所以调用c 函数的时候允许 提供 1, 2, 3个参数
c(1)----> c(1, 2, 3);---->n = 1; 其他形参使用默认值c(2,5)--->c(2,5,3)----->n = 2, m = 5, j = 3;c(7,8, 9)----->默认参数不生效了!
因此下面的调用是不允许的。
c(1, , 4); ----> 并不是调用c(1,2,4)
#includeusing namespace std;int c(int n = 1, int m = 2, int j = 3);int main(){ c(1);//----> c(1, 2, 3);---->n = 1; 其他形参使用默认值 c(2,5);//--->c(2,5,3)----->n = 2, m = 5, j = 3; c(7,8, 9);//----->默认参数不生效了! return 0;}int c(int n, int m, int j){ cout << "n=" << n << ", m=" << m << ", j=" << j << endl;}
运行的结果
book@book-desktop:~/meng-yue/c++/function/01$ ./demon=1, m=2, j=3n=2, m=5, j=3n=7, m=8, j=9book@book-desktop:~/meng-yue/c++/function/01$
#includeconst int ArSize = 80;char * left(const char * str, int n = 1);int main(){ using namespace std; char sample[ArSize]; cout << "Enter a string:\n"; cin.get(sample,ArSize); char *ps = left(sample, 4); cout << ps << endl; delete [] ps; // free old string ps = left(sample); cout << ps << endl; delete [] ps; // free new string // cin.get(); // cin.get(); return 0;}// This function returns a pointer to a new string// consisting of the first n characters in the str string.char * left(const char * str, int n){ if(n < 0) n = 0; char * p = new char[n+1]; int i; for (i = 0; i < n && str[i]; i++) p[i] = str[i]; // copy characters while (i <= n) p[i++] = '\0'; // set rest of string to '\0' return p; }
运行的结果,left(sample) 做的事情就是相当于 调用 left(sample, 1)
book@book-desktop:~/meng-yue/c++/function/01$ ./demoEnter a string:meng-yue-foundationmengm
代码资料的路径
转载地址:http://veyci.baihongyu.com/