Аргумент функции уже инициализирован в объявлении функции C ++ - PullRequest
2 голосов
/ 11 февраля 2010

Итак, вот мой вопрос: в объявлении функции есть аргумент, и он уже инициализирован до определенного значения. Каковы процедуры для вызова этой функции и использования этого значения по умолчанию, или это просто способ документировать код, сообщая другим программистам, что вы ожидаете от них использовать в качестве значения параметра? Спасибо.

enum File
{
    XML = 0,
    PDF = 1,
};

Char *SetSection(const File = XML);

Ответы [ 6 ]

4 голосов
/ 11 февраля 2010

Если я правильно понимаю ваш вопрос, достаточно просто позвонить SetSection без параметров.

SetSection();

Вышеуказанный вызов переводится (из-за отсутствия лучшего термина) в:

SetSection(XML);
3 голосов
/ 11 февраля 2010

Это означает, что функция может быть вызвана без параметров, в этом случае будет использоваться значение по умолчанию, XML.

2 голосов
/ 11 февраля 2010

В этом случае File является аргументом по умолчанию . Вызов SetSection() без аргументов установит для аргумента File значение по умолчанию, указанное в объявлении.

1 голос
/ 11 февраля 2010

Если вы позвоните

SetSection();

Вместо этого он будет вызывать SetSection (XML). Вот почему необязательные параметры должны быть в конце всех параметров. Если вы не предоставите достаточно параметров, он будет использовать значение по умолчанию.

0 голосов
/ 11 февраля 2010

То, что вы видите в объявлении, является значением аргумента по умолчанию.

Если вы звоните SetSection();, это то же самое, что SetSection(XML);

Вы также можете вызвать SetSelection(PDF); или использовать любой другой допустимый параметр, чтобы переопределить значение по умолчанию.

Возможно, вы также видите результат постепенного развития, которое началось с того, что функция не имеет параметров, и ее вызовы разбросаны по всему коду. Затем был введен альтернативный тип файла PDF, но его прототип был изменен на значение по умолчанию, что означало отсутствие необходимости изменять существующий сайт вызовов.

0 голосов
/ 11 февраля 2010

XML является стандартным параметром. Вы можете позвонить с помощью SetSection(); (но SetSection(XML) или SetSection(PDF) также допустимы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...