Описание тега effective-c++
Тег для внедрения и понимания руководящих принципов и рекомендаций в любой из книг "Эффективный C++: 50 конкретных способов улучшить ваши программы и дизайн", "Более эффективный C++: 35 новых способов улучшения ваших программ и дизайнов", "Эффективный современный C++: 42 Конкретные способы улучшить использование C++11 и C++14"или" Эффективный STL: 50 конкретных способов улучшить использование стандартной библиотеки шаблонов "Скотта Мейерса.
5
ответов
C++: использование const с итераторами STL
Из эффективного C++, пункт 3 /* case1 */ const std::vector<int>::iterator i // i acts like a T* const /* case2 */ std::vector<int>::const_iterator ci // ci acts like a const T* Вспомнить как const применяется, я раньше помнил следующее и…
25 июл '10 в 18:02
6
ответов
"Избегайте возврата дескрипторов внутренним объектам", так какова альтернатива?
Эффективный C++ Скоттом Мейерсом говорит в главе 5, пункт 28, чтобы не возвращать "дескрипторы" (указатели, ссылки или итераторы) к внутренним объектам, и это определенно дает хорошие результаты. Т.е. не делай этого: class Family { public: Mother&a…
01 ноя '12 в 12:08
1
ответ
Явное объявление C++ вызывает предупреждение в конструкторе по умолчанию
В Code::Blocks v13.12 Проект у меня есть класс под названием Drawable которая имеет переменную-член с плавающей точкой под названием rotation, Я заметил, что явно декларирует rotation внутри Drawableконструктор по умолчанию вызовет следующее предупр…
06 янв '15 в 03:18
3
ответа
static_cast вывел этот объект в базовый класс в C++
При чтении пункта 27 "Минимизируйте приведение типов в Effective C++" говорится, что не пытайтесь использовать static_cast транслировать *this в производном классе до базового класса. Это потому что static_cast<Base>(*this) создаст временный о…
28 апр '16 в 22:16
2
ответа
Функциональные макросы и странное поведение
Я начал читать Effective C++, и в какой-то момент в пункте 2 упоминается следующее: // call f with the maximum of a and b #define CALL_WITH_MAX(a, b) f((a) > (b) ? (a) : (b)) ... int a = 5, b = 0; CALL_WITH_MAX(++a, b); // a is incremented twice …
22 фев '13 в 23:09
4
ответа
Возвращение локальных переменных в C++ (Правило 21 в Effective C++, 3-е издание)
Как известно, возвращать локальную переменную из функции в C++ небезопасно из-за области видимости. В Effective C++ Third Edition Скотт Мейерс рассказывает об этой проблеме в пункте 21 на странице 101. Однако в заключение он сказал, что правильным р…
16 июл '14 в 20:24
3
ответа
Какую функцию C++ пишет и вызывает в пустом классе?
В книге Effective C++ я видел отрывок ниже: В результате, если вы напишите class Empty{}; это по сути так же, как если бы вы написали это: class Empty { public: Empty() { ... } Empty(const Empty& rhs) { ... } ~Empty() { ... } Empty& operator…
23 авг '16 в 06:23
1
ответ
Правильно ли я понял точку зрения Скотта Мейерса на std::weak_ptr?
Effective Modern C++ (стр. 136) использует следующий пример для мотивации std::weak_ptr, Кэш определяется как неупорядоченная карта со слабыми указателями на объекты в качестве значений. Всякий раз, когда клиенты этого кэша запрашивают объект (по кл…
19 июл '15 в 15:45
1
ответ
Что такое бинарное обновление?
Я читаю Скотта Мейерса Effective C++. В пункте 30: Понять все входы и выходы inline. Он ссылается на концепцию бинарного обновления.
30 мар '16 в 12:04
5
ответов
Заполните std::array в списке инициализации члена
Следующий код работает, но я хотел бы избежать предупреждения: предупреждение: 'fitness::vect_' должен быть инициализирован в списке инициализации члена [-WeffC++] когда он скомпилирован с g++ -Weffc++ переключатель: #include <array> template&…
24 фев '14 в 16:47
0
ответов
auto в C++ с initializer_list
Вопрос об эффективном современном C++ пункте 2: auto x3={27};// x3's type is std::initializer_list auto x4{27}; // x4's type is std::initializer_list но когда я тестирую тип x4, я обнаружил, что тип x4 - это int Я не знаю, какой тип х4 #include<i…
20 авг '18 в 07:45
5
ответов
Запутался в подсчете ссылок
Спасибо за помощь заранее. Я читаю книгу Скотта Мейерса More Effective C++, но одна простая программа из пункта 29 "Подсчет ссылок" действительно смущает меня. Программа скопирована здесь: String::String(const String& rhs): value(rhs.value) { ++…
15 июл '12 в 23:29
1
ответ
Эффективный C++: пункт 41 - путаница с неявными интерфейсами
Я читаю Effective C++, пункт 41 с заголовком "Понимание неявных интерфейсов и полиморфизм во время компиляции". Он дает объяснение этому примеру и следующему, но я не понимаю эту часть. template<typename T> void doProcessing(T& w) { if (w.…
22 авг '18 в 07:13
7
ответов
Эффективный пункт 23 C++. Предпочитать функции, не являющиеся членами, не являющимися друзьями.
Размышляя над некоторыми фактами о дизайне классов, в частности о том, должны ли функции быть членами или нет, я изучил Effective C++ и нашел пункт 23, а именно: "Предпочитать не являющиеся членами функции, не являющиеся друзьями, функциям-членам. П…
13 май '11 в 09:14
5
ответов
Эффективный C++: препятствует защищенному наследованию?
Я читал " Эффективный C++" Скотта Мейерса (третье издание), и в параграфе в пункте 32: Убедитесь, что публичное наследование "is-a" на странице 151, он делает комментарий (который я выделил жирным шрифтом): Это верно только для общественного наследс…
26 июн '11 в 13:41
1
ответ
В действующем пункте C++ 3, зачем использовать static_cast<const TextBlock &>(* this) вместо static_cast<const TextBlock>(* this)?
Я читаю Скотта Мейерса Effective C++ 3-ий.В пункте 3: Используйте const всякий раз, когда это возможно. Чтобы использовать оператор функции-члена const [], оператор функции-неконста [] должен выполнить 2 операции приведения: const_cast<char&&…
23 мар '16 в 08:27
1
ответ
Отключение предупреждений GCC при использовании класса "Uncopyable"
У меня есть несколько классов, которые я не хочу копировать, некоторые из этих классов имеют члены-указатели. Чтобы сделать эти классы не копируемыми, я в частном порядке наследую следующий шаблон класса: template <class T> class Uncopyable { …
27 дек '08 в 10:15
5
ответов
C++: Скотт Мейерс "Эффективный STL": пункт 31: узнайте свои варианты сортировки: помогите понять
Добрый день! В своем "Эффективном STL" Скотт Мейерс написал Третье - использовать информацию в упорядоченном контейнере итераторов, чтобы итеративно разделить элементы списка на позиции, в которых вы бы хотели, чтобы они находились. Как вы можете ви…
09 фев '12 в 23:47
1
ответ
Как сделать функции базового шаблона видимыми в производном классе?
В "Эффективном C++", пункт 44: Фактор-независимый код из шаблонов. Я нахожу некоторую разницу между его английской версией и китайской версией, переведенной Хоу Цзе (侯捷). Это английская версия, которую я нашел на странице 214: template<typename T…
04 апр '16 в 07:18
1
ответ
Как работает ссылка вывести?
Может дублироваться на это. Я читаю Effective Modern C++. Под Item 1Я нашел случай для универсальной ссылки: Для последнего примера f(27); Я сделал тест под VS2013. void process(int& x) { std::cout << "int&" << std::endl; } void …
20 июл '17 в 01:59