2012-04-19 3 views
1

Если у меня есть эта функция, fun (t1, t2, t3), и я называю ее забавой (v1, v2), можно ли получить значение по умолчанию для v3, хотя не указано, что это будет ? Например, bool является ложным, указатель имеет значение null, int - 0 и т. Д. Или это должно вызвать ошибку компилятора?Неявные значения по умолчанию для параметров?

ответ

1

Это вызовет ошибку компилятора, если функция не перегружена.

Если вы не можете изменить прототип, вы можете перегрузить его самостоятельно:

void fun (bool t1, bool t2) 
{ 
    fun (t1,t2, true); //or whatever 
} 

или если вы можете изменить его, вы можете объявить дефолт по параметру, как это:

void fun (bool t1, bool t2, bool t3 = true) 
{ 
} 
+0

Да, спасибо, это то, чего я боялся. Это появление «неявного значения параметра по умолчанию», которое я обнаружил, заставил меня совсем разобраться. Оказалось, что кусок даже не был составлен. ;) – user1130005

1

Объявите это так:

void fun (Foo t1, Bar t2, bool t3 = false) 
{...} 

Когда вы кладете = и значение, что параметр получает значение по умолчанию, если ничего не предусмотрено. Однако вы должны начать использовать их с правой стороны списка параметров.

Смежные вопросы