1. 程式人生 > 實用技巧 >c++: 預設引數

c++: 預設引數

 預設引數是指當函式省略了實參之後預設傳入的一個值。
 必須通過函式原型設定預設值。另外對於帶引數列表的函式,必須從右向左新增預設值,換句話說,要為某個引數設定預設值,必須為右邊的所有引數提供預設值。

int harpo(int n, int m=4, int a=5); // OK
int parpo(int n, int m=4, int a); // 不行

 而在呼叫的時候 harpo() 函式允許提供1、2、3個引數,但不能跳過任何引數

beeps = harpo(2); // harpo(2, 4, 5);
beeps = harpo(1, 2); // harpo(1, 2, 5);
beeps = harpo(1, 2, 3); // harpo(1, 2, 3);
beeps = harpo(1, , 4); // 不行

 預設引數是一個很簡單的概念,只是提供一個便捷的方式,不難理解,看一個例子結束這個討論:

#include <iostream>

using namespace std;

const int ArSize = 80;
char* left(const char* str, int n = 1);

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
	}
	while (i <= n) {
		p[i++] = '\0';
	}
	return p;
}

int main() {
	char sample[ArSize];
	cout << "get a string: " << endl;
	cin.get(sample, ArSize);
	char* ps = left(sample, 4);
	cout << ps << endl;
	delete[] ps;
	ps = left(sample);
	cout << ps << endl;
	return 0;
}