Описание тега 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