Что такое использование неявного преобразования в C++, когда я вызываю функцию, которая принимает параметры как int, а я передаю аргумент, который является двойным? Почему это не ошибка времени компиляции? Что происходит в стеке выполнения, что позволяет это произойти?Неявное преобразование и вызов функции
#include <iostream>
void foo(int num);
int main() {
double doub= 4.9;
foo(doub);
return 0;
}
void foo(int num){
std::cout<<num<<std::endl;
}
* Почему это не ошибка времени компиляции? * В 80-х годах языки программирования не были такими безопасными по типу, как сейчас. C++ обратно совместим с C. – DeiDei
Стек исполняемого файла, ничего. Вы не хотите этого во время выполнения. Вы замедляете все, чтобы поймать несколько неправильных строк кода. Поднимите уровень предупреждения вашего компилятора, и вы должны получить предупреждение о преобразовании. – user4581301
@ user4581301 разве это не беспорядок с компилятором, так как int и double имеют одинаковый размер? Делает неявное преобразование, подобное этому, иногда даже полезно? –