Задать вопрос
@frilix
Иногда "творю"

Правила перегрузки функций?

Набор параметров должен существенно различаться , а что понимается под существенно, пытаюсь ответить, но что-то не выходит.
too(int y);
too (int x= 1);
too(double y=3; int x=7);
  • Вопрос задан
  • 238 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 2
AxisPod
@AxisPod
1. Если кол-во аргументов одинаково, то они не должны быть неявноконвертируемы, это не критическая ошибка, но в случае, если вы дадите 3й тип, который неявно конвертируется в оба, то получите, что компилятор не может понять какой использовать. Вам придется явно приводить типы, можно решить шаблонами, но я бы не советовал.

2. Не перегружайте с одним кол-вом аргументов числа и указатели, может привести к непредвиденному поведению в случае 0го значения. В случае использования nullptr (С++11) проблема не возникнет.

3. Как указано у Antony , вы увидете сразу, будет ошибка компиляции.

4. Для конструкторов в перегрузках старайтесь использовать explicit, спасёт в будущем от долгих поисков проблем. Применимо для конструкторов с 1 явным аргументом.
Ответ написан
Комментировать
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Компилятор будет ругаться на:
too(int y);
too (int x= 1);

поскольку это одно и тоже.

Даже больше:
too();
too (int x= 1);


Это, вприцыпе, тоже одно и тоже.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы