Форум программистов, компьютерный форум CyberForum.ru

Coding style или нет - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ потоки выполнения c++ http://www.cyberforum.ru/cpp-beginners/thread443624.html
В чем вся соль потоков(нитей)? Порекомендуйте мне литературу или ссылку дайте на годную статью, а то ничего не понял
C++ Работа с консольным окном Здравствуйте! Может ли программа узнать размеры консольного окна? (Требуется что-то вроде окна в Турбо паскале 7.0.) А так же может ли сама программа изменять шрифт и размер шрифта в консольном окне? Цвет фона и шрифта? И если вы знакомы с функцией system() и знаете местечко с подробным описанием этой функции, выложите, пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread443622.html
C++ Написать класс для эффективной работы со строками
Написать класс для эффективной работы со строками, что позволяет форматировать и сравнивать строки, хранить в строках числовые значения и извлекать их. Для этого необходимо реализовать: • перегруженные операции присвоения и конкатенации; • операции сравнения и приведения типов; • преобразование в число любого типа; • форматный вывод строки. Написать программу, демонстрирующую работу с этим...
Вывести несколько строк в файл C++
Условие #include <iostream> #include <fstream> #include <iomanip> #include <cstring> const int N=100; std :: ifstream input; std :: ofstream output;
C++ Создайте общий массив, из данного массива и точно такого же но другого размера, и отсортируйте по уменьшению. http://www.cyberforum.ru/cpp-beginners/thread443580.html
Создайте общий массив, из данного массива и точно такого же но другого размера, и отсортируйте по уменьшению.
C++ Определите сумму элементов массива, расположенных после элемента равного минимуму. Определите сумму элементов массива, расположенных после элемента равного минимуму. подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
09.02.2012, 21:51     Coding style или нет
Цитата Сообщение от HighPredator Посмотреть сообщение
Услышал сегодня от коллеги такую интересную вещь: есть блоки кода ограниченные командными скобками {}. Так вот, рекомендуется переменные, используемые в блоках и только в них, объявлять в таких блоках. Я например, как правило объявляю переменные в начале подпрограмм. Привычка. Вопрос такой: это чисто coding style рекомендация или есть какое-то практическое значение подобного действия?
В случае языка Си это действительно только вопрос стиля, удобства и т.п. В случае Си++ - уже нет, потому как в Си++ есть такие неявные действия как вызов конструктора и деструктора

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// В данном случае мы для переменной str один раз вызовем конструктор и один раз деструктор
{
  std:string str;
  for (....)
  {
    ...
    str = "abc";
    ...
  }
}
 
// В данном случае мы для переменной str будем вызывать конструктор и деструктор
// на каждой итерации цикла. Т.е. попросту увеличим количество кода. Возможно,
// что конкретно в случае std::string оптимизации компилятора сумеют выгребсти весь
// мусор, но в общем случае код увеличится по времени исполнения
{
  for (....)
  {
    std:string str;
    ...
    str = "abc";
    ...
  }
}
Цитата Сообщение от Байт Посмотреть сообщение
- Экономится стековое пространство
Скорее всего ты это почерпал из старых книг (ну или из новых книг, авторы которых содрали инфу из старых книг). 20 лет назад сие было справедливо, потому что компиляторы были слабые. А в современном мире даже самый дерьмовый компилятор оптимальным образом распределит память независимо от того, что и как ты распихаешь по лексическим блокам

Добавлено через 52 секунды
Цитата Сообщение от Сtrl Посмотреть сообщение
Переменные могут размещаться в свободной памяти (куче)
Переменные НЕ могут размещаться в куче. В куче размещается только то, для чего явно были вызваны операторы динамического выделения памяти (malloc, new)
 
Текущее время: 19:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru