Описание тега gotw

Относится к задачам программирования C++ Херба Саттера "Гуру недели".
2 ответа

Варианты использования для выпускных классов

Я читал комментарии гуру Херб Саттера недели редукции о virtual функции, и, наконец, увидел его упоминание этого: [...] "использование финала реже" - ну, вроде как. Я не знаю многих, и во время стандартизации Бьярне неоднократно спрашивал примеры пр…
29 май '13 в 07:44
2 ответа

Понимание Гуру Недели № 67: Двойной или Ничего

Недавно я читал пост: Двойник или Ничего из GOTW Херба Саттера. Я немного запутался в объяснении следующей программы: int main() { double x = 1e8; while( x > 0 ) { --x; } } Предположим, что этот код выполняется 1 секунда на некотором компьютере. …
16 май '13 в 14:51
1 ответ

Что означает "Это не работает для ссылок, которые являются членами объектов" в GotW #88?

Херб Саттер: Эффективный параллелизм: используйте иерархии блокировки, чтобы избежать тупиковых ситуаций. Эффективный параллелизм: нарушите закон Амдала! "ПОЛУЧИЛСЯ № 88: Кандидат на" Самое важное const "2008-01-01 от Херба Саттера Один мой друг не…
02 авг '17 в 12:06
2 ответа

C++ самый неприятный анализ снова

Взято непосредственно с http://herbsutter.com/2013/05/09/gotw-1-solution/ В то время как widget w(); для меня понятно, я понятия не имею, как приведенный ниже код может быть объявлением функции? // same problem (gadget and doodad are types) // widge…
16 май '13 в 13:27
3 ответа

Зачем инициализировать unique_ptr с помощью вызова make_unique?

Взято с: http://herbsutter.com/2013/05/22/gotw-5-solution-overriding-virtual-functions/ Почему мы должны писать: auto pb = unique_ptr<base>{ make_unique<derived>() }; Вместо просто: auto pb = make_unique<derived>(); Мое единственно…
27 май '13 в 13:47
2 ответа

Что автор пытается сказать в GotW #53?

Этот псевдокод был получен из GotW #53 под подзаголовком "Не очень хорошее долгосрочное решение". Я уже несколько часов пытаюсь понять, что говорит автор, особенно в отношении комментария, начинающегося с "// error: потенциал..." ниже, но безрезульт…
09 июл '13 в 19:12
0 ответов

Неопределенная ссылка на деструктор Pimpl только с clang в Linux

Вдохновленный GoTW 101, я решил попробовать применить идиому Pimpl к части библиотеки, над которой я работаю, используя оболочку pimpl, описанную там. Однако при попытке компиляции я получаю неопределенную ссылку на деструктор этого класса Pimpl. Эт…
17 янв '14 в 22:23
2 ответа

Синтаксис getw 80 - инициализация в списке параметров

Gotw 80 включает в себя следующий пример: // Example 1 // #include <string> using namespace std; class A { public: A( const string& s ) { /* ... */ } string f() { return "hello, world"; } }; class B : public A { public: B() : A( s = f() )…
31 окт '11 в 21:30
4 ответа

Пример в Gotw 67

Есть пример в http://www.gotw.ca/gotw/067.htm int main() { double x = 1e8; //float x = 1e8; while( x > 0 ) { --x; } } Когда вы меняете double на float, это бесконечный цикл в VS2008. Согласно объяснению Готв: Что если float не может точно предста…
09 авг '11 в 12:08
2 ответа

C++11 тип удержания против const char *

В GotW 94 Херб Саттер проводит различие между "классическим C++" объявлением const char* s = "Hello"; и "современный" стиль auto s = "Hello"; Он говорит нам, что есть "тонкая разница в типе s, где auto стиль более правильный ". [Отредактировано, что…
18 дек '14 в 15:50
3 ответа

Почему бы не изменить размер и очистить работы в GotW 54?

Ссылаясь на статью Gotw 54 от HerbSutter, он объясняет Правильный способ "сжать, чтобы подогнать" вектор или деку и Правильный способ полностью очистить вектор или деку Можем ли мы просто использовать container.resize() а также container.clear() для…
12 ноя '09 в 09:16
2 ответа

Почему этот тип неполон при использовании идиомы PIMPL?

Я использую идиому PIMPL, и, в частности, я использую шаблон из этого поста. Учитывая набор классов ниже и компиляцию с VS2015 Update 3, я получаю ошибки компиляции: Ошибка C2027 использование неопределенного типа 'C::C_impl' (компиляция исходного ф…
21 июл '16 в 14:14
2 ответа

Причина для C++ IntAtomicGet, GotW

В GotW статье № 45 Херб утверждает следующее: void String::AboutToModify( size_t n, bool bMarkUnshareable /* = false */ ) { if( data_->refs > 1 && data_->refs != Unshareable ) { /* ... etc. ... */ Это условие if не является потокобе…
20 окт '15 в 20:21
3 ответа

Как исправить это типичное исключение небезопасного кода?

Согласно GOTW # 56, в следующем коде есть потенциальная классическая утечка памяти и исключительные проблемы безопасности. // In some header file: void f( T1*, T2* ); // In some implementation file: f( new T1, new T2 ); Причина в том, что когда мы n…
16 май '13 в 19:10
3 ответа

Для вектора, почему предпочитаете итератор указателю?

В Херб Саттерс When Is a Container Not a Container? Он показывает пример переноса указателя в контейнер: // Example 1: Is this code valid? safe? good? // vector<char> v; // ... char* p = &v[0]; // ... do something with *p ... Затем следует…
21 сен '15 в 18:03
1 ответ

Как я могу реализовать "op" в терминах "op=" в базовом классе CRTP?

Гуру Херба Саттера недели № 4, "Механика классов", учит, что форма " op b" перегруженного оператора должна быть реализована в форме "a op = b" (см. Пункт #4 в решениях), В качестве примера он показывает, как сделать это для + оператор: T& T::op…
30 апр '14 в 00:03
2 ответа

GotW #101 "решение" действительно что-то решает?

Сначала прочитайте сообщения Херта Саттерса GotW, касающиеся pimpl в C++11: ПОЛУЧИЛО #100: Брандмауэры для компиляции (сложность: 6/10) ПОЛУЧИЛО #101: Компиляционные брандмауэры, часть 2 (сложность: 8/10) У меня возникли проблемы с пониманием решени…
21 дек '11 в 19:50
0 ответов

«использование пространства имен x» внутри пространства имен в заголовке

Если я правильно понял Рэймонда Чена, это опасно, но я не могу точно понять, почему. http://gotw.ca/publications/migrating_to_namespaces.htm Чтобы внести ясность, речь идет не о загрязнении глобального пространства имен из-за того, что заголовки вне…
21 мар '23 в 16:59