1) Насколько я знаю, static_cast<> создает копию переменной но уже в другом формате. Вот код
// 1
int x (7);
float y = 200/static_cast<float>(x)
// 2
float *xClone = new float(7);
floay y = 200/xClone;
delete xClone;
Чем static_cast
эффективнее и насколЬко?
2) допустим, мне надо поработать с какой то переменной в функции типа void
. Я отправляю туда ссылку на эту переменную. Создается копия этой переменной или функция напрямую работает с моей переменной которую я отправил в функцию?
А вообще - не морочьте голову ни себе, ни людям :) и пишите
float y = 200.0/x;
Кстати, все равно ваше
floay y = 200/xClone;
не скомпилируется - из-за неверного типа и того, что на указатель делить нельзя :)
Работает напрямую с переменной.
Не задавайте совершенно разные вопросы в одном...
int x (7);
float y = 200/static_cast<float>(x)
Равнозначен такому коду:
int x (7);
float __tempor = x ;
float y = 200/__tempor;
Переменная __tempor
как и все локальные переменные могут хранится в стеке или в регистрах процессора, как оптимизация всё провернула. При выделении памяти в куче происходит торможение всех остальных нитей для организации выделения памяти. Далее в программе когда потребуется значение переменной, будет постоянно требоваться доступ этой ячейке памяти (оптимизация не поможет, так-как другие нити могли изменить значение). А если переменная локальная, то всё будет под контролем компилятора (и место хранения и оптимизация).
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите можно ли как-то записать в 1 строчку следующий код:
Зачем нужен флаг /EHsc для MSVC компилятора? Недавно увидел его в конфиге, почитал доки, но так и не понял о каких синхронных/асинхронных исключениях...