Описание тега 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…
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, а именно: "Предпочитать не являющиеся членами функции, не являющиеся друзьями, функциям-членам. П…
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&lt;char&amp;&…
23 мар '16 в 08:27
1 ответ

Отключение предупреждений GCC при использовании класса "Uncopyable"

У меня есть несколько классов, которые я не хочу копировать, некоторые из этих классов имеют члены-указатели. Чтобы сделать эти классы не копируемыми, я в частном порядке наследую следующий шаблон класса: template &lt;class T&gt; class Uncopyable { …
27 дек '08 в 10:15
5 ответов

C++: Скотт Мейерс "Эффективный STL": пункт 31: узнайте свои варианты сортировки: помогите понять

Добрый день! В своем "Эффективном STL" Скотт Мейерс написал Третье - использовать информацию в упорядоченном контейнере итераторов, чтобы итеративно разделить элементы списка на позиции, в которых вы бы хотели, чтобы они находились. Как вы можете ви…
09 фев '12 в 23:47
1 ответ

Как сделать функции базового шаблона видимыми в производном классе?

В "Эффективном C++", пункт 44: Фактор-независимый код из шаблонов. Я нахожу некоторую разницу между его английской версией и китайской версией, переведенной Хоу Цзе (侯捷). Это английская версия, которую я нашел на странице 214: template&lt;typename T…
04 апр '16 в 07:18
1 ответ

Как работает ссылка вывести?

Может дублироваться на это. Я читаю Effective Modern C++. Под Item 1Я нашел случай для универсальной ссылки: Для последнего примера f(27); Я сделал тест под VS2013. void process(int&amp; x) { std::cout &lt;&lt; "int&amp;" &lt;&lt; std::endl; } void …