Назад к вопросам
JuniorТеорияИногда
Что произойдёт, если собрать и запустить эту программу?
#include <iostream>
using Meters = double;
void print(double) { std::cout << "double"; }
void print(Meters) { std::cout << "Meters"; }
int main() {
Meters m = 2.5;
print(m);
}Ошибка компиляции: print(double) определена дважды
- Ждать
Meters: псевдоним — второе имяdouble, а не новый тип, поэтомуprint(Meters)— повторное определениеprint(double). - Ждать ошибку компоновки: компилятор сам видит оба определения в одном файле и останавливается; компоновщик сообщает только о повторах из разных файлов.
- Как сделать
Metersотдельным типом, чтобы по нему можно было перегрузитьprint? - Чем
using Meters = double;отличается от#define Meters double?