class MyWorld{
public:
explicit MyWorld(int n) : _n(n), _num(new int[n]) {}
~MyWorld() {delete[] num;}
void Show() {
for (int i = 0; i < _n; ++i)
// ...
}
private:
int _n;
int _num;
}
class MyWorld{
public:
MyWorld(int n) : {
_n = n;
_num = new int[n];
}
// ...
}
Числа с плавающей запятой применяются чаще потому что:
1) Они сильно быстрее чисел с фиксированной точкой. Потому что короткие числа с фиксированной запятой вы можете сами запросто реализовать в целых числах (например, считайте деньги в копейках, при выводе делите на 100). Или расстояние меряйте в целых миллиметрах, а не в float метрах. Время - в милисекундах. Тут вам никакой специальный тип не нужен.
А длинные decimal, как в питоне - это очень медленно. В процессоре есть операции для работы с float/double. А с числами произвольной длины процессор работать напрямую не может. Это надо руками циклы реализовывать. То же деление - и то в столбик надо делать! А целые и float за одну операцию обрабатываются, в процессоре есть специальные цепи именно для этого.
И использовать такой медленный тип и зависимый от реализации тип - это не философия языков с/с++. Кому надо, напишут/подключат свою библиотеку, которая заточена под их нужды.
2) Числа с плавающей запятой имеют более обширное применение. Ведь редко когда вам достаточно фиксированной абсолютной точности. Как в суммах рублей, где точности до копейки хватит. Обычно вы не знаете заранее, сколько вам знаков понадобится. Очень маленькие числа нужны точнее, очень большие - не так важно. Вот и появляется идея плавающей запятой.