Аргумент по умолчанию в C ++ имеет некоторые специальные свойства? - PullRequest
4 голосов
/ 13 ноября 2011

Это тестовый вопрос, а не домашняя работа.Тест был сделан.

Какое из следующих утверждений об аргументах по умолчанию в C ++ является правильным?

A. Default Argument cannot be of a user-defined type.
B. Default Argument can never precede non-default arguments
C. Default Argument cannot be of pointer type.
D. Default Argument exist in global heap not function's stack
E. Default Argument are not considered for generating the function's signature. 

Я выбрал B и E. Это правильно?Я не уверен насчет D, это тоже правильно?

Ответы [ 2 ]

7 голосов
/ 13 ноября 2011

B это правда. A, C и D. ложны.

E требует уточнения. Это зависит от того, что подразумевается под «генерацией сигнатуры функции».

Что касается компилятора, подпись является подписью. Аргументы по умолчанию имеют значение, только когда вызывает функцию. Вот где подставляются значения по умолчанию. Таким образом, функция имеет подпись, с которой она написана.

Если «создание сигнатуры функции» означает «что такое сигнатура функции в С ++», тогда сигнатуре все равно, является ли аргумент стандартным. Но если «генерация подписи функции» означает «как вы ее называете», тогда она заботится о значениях по умолчанию.

2 голосов
/ 13 ноября 2011

A, C и D все определенно ложно. Б определенно верно. Я не очень уверен в E, я всегда забываю.

...