Предсказать вывод следующей программы на C ++.
|
Вывод: вышеприведенная программа компилируется и работает нормально, и выдает следующий вывод.
fun() called fun() const called
Два метода «void fun () const» и «void fun ()» имеют одинаковую сигнатуру, за исключением того, что один является const, а другой — нет. Также, если мы более внимательно посмотрим на вывод, мы заметим, что const void fun () вызывается для объекта const, а void fun () вызывается для неконстантного объекта.
C ++ позволяет перегружать методы-члены на основе типа const. Перегрузка на основе типа const может быть полезна, когда функция возвращает ссылку или указатель. Мы можем сделать одну функцию const, которая возвращает константную ссылку или указатель const, другую неконстантную функцию, которая возвращает неконстантную ссылку или указатель. Смотрите это для более подробной информации.
А как насчет параметров?
Правила, связанные с параметрами const, интересны. Давайте сначала посмотрим на следующие два примера. Программа 1 завершается неудачно при компиляции, но программа 2 компилируется и работает нормально.
|
Выход:
Compiler Error: redefinition of 'void fun(int)'
|
Выход:
const fun() GeeksforGeeks
C ++ допускает перегрузку функций на основе постоянства параметров, только если параметр const является ссылкой или указателем. Вот почему программа 1 не удалось собрать, но программа 2 работала нормально. Это правило действительно имеет смысл. В программе 1 параметр «i» передается по значению, поэтому «i» в fun () является копией «i» в main (). Следовательно, fun () не может изменить 'i' функции main (). Следовательно, не имеет значения, принимается ли «i» в качестве параметра const или обычного параметра. Когда мы передаем ссылку или указатель, мы можем изменить указанное или указанное значение, чтобы у нас было две версии функции, одна из которых может изменять указанное или указанное значение, а другая — нет.
В качестве упражнения прогнозируем результат следующей программы.
|
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- C ++ | ключевое слово const | Вопрос 5
- C ++ | ключевое слово const | Вопрос 5
- C ++ | ключевое слово const | вопрос 2
- C ++ | ключевое слово const | Вопрос 1
- C ++ | ключевое слово const | Вопрос 3
- Разница между const int *, const int * const и int const *
- Разница между const char * p, char * const p и const char * const p
- Перегрузка функций в C ++
- Перегрузка функций и плавающие в C ++
- Поддерживает ли C перегрузку функций?
- Перегрузка функций и тип возврата
- C ++ | Перегрузка функций и аргументы по умолчанию | Вопрос 3
- C ++ | Перегрузка функций и аргументы по умолчанию | вопрос 2
- C ++ | Перегрузка функций и аргументы по умолчанию | Вопрос 4
- C ++ | Перегрузка функций и аргументы по умолчанию | Вопрос 5
0.00 (0%) 0 votes