Запрет передачи аргумента типа char в функцию

Объявите удалённую перегрузку process(char). Она будет точнее подходить для аргумента char, чем преобразование к int, и компилятор отклонит такой вызов.

Короткий ответ

Что ответить на собеседовании

Объявите удалённую перегрузку process(char). Она будет точнее подходить для аргумента char, чем преобразование к int, и компилятор отклонит такой вызов.

Подробный разбор

Ответ с пояснениями

Условие

Составьте программу, в которой попытка вызвать функцию с параметром типа char будет недопустима.

# include <iostream>

void process(int num) {
    // реализация функции
}

int main() {
    process(10);   // корректный вызов
    process('3');  // должен быть запрещён компилятором
    return 0;
}

Ответ

Объявите удалённую перегрузку process(char). Она будет точнее подходить для аргумента char, чем преобразование к int, и компилятор отклонит такой вызов.

void process(int num) {
    // Работа с целым числом.
}
void process(char) = delete;

int main() {
    process(10);
    // process('3'); // Ошибка: выбрана удалённая перегрузка.
}

Это запрещает именно тип char. signed char, unsigned char и явное преобразование к int — другие случаи. Если требование состоит в запрете всех типов кроме int, понадобится более строгий контракт перегрузок или constraints.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее