TGViewer
Сіпласпластик Сіпласпластик @cpplastic · 740 subscribers
Post #221 260
В плюсах доволі нерідко перевантажують метод залежно від того, чи сталим є сам обʼєкт, чи ні. Ну, наприклад, контейнер може оголошувати метод, що повертає ітератор на початок якось так (спрощено):
T* MyContainer::begin();
const T* MyContainer::begin() const;

тобто якщо обʼєкт сталий, то і вказівник повертає такий, через який не можна поміняти те, на що він вказує, а якщо обʼєкт мутабельний, то і вказівник теж.
(Якщо ви не в темі, то отой const, що після дужок, фактично відноситься до неявного this, який потрапляє в метод).

Але в QHash (хеш-мапа в #Qt) оператор для доступу до елемента по ключу, як ми сьогодні з друганами виявили в ході обговорення, якогось хєра оголошений отак:
T& operator[](const Key& key);
const T operator[](const Key& key) const;


На перший погляд, все ок 🙂 Окрім того незначного факту, що константний оператор якогось хєра повертає не const T& (тобто не референс), а const T 🤯 Іншими словами, воно щоразу те значення, яке ви дістаєте з хеш-мапи по ключу для читання, зайвий раз копіює.

Фішка в тому, що ніхто в C++ ніколи не повертає const T, бо це безглуздо. Повертають або просто T, або const T&. Тож я вангую, що це баг, про який компілятор вам ніколи нічого не скаже, бо з його погляду все в порядку.

Зайве нагадування про те, що всі ці бібліотеки, котрими тисячі або навіть мільйони людей користуються, пишуть не якісь суперпрограмісти, а такі ж посередні, як ми всі з вами 😎😂
  • 😁 6
More from @cpplastic
  1. Oct 9, 2026Зацініть рівень української служби підтримки. Жодних пояснень, заяв, перепитувань: «Не тре…
  2. Oct 7, 2026Post #543
  3. Oct 2, 2026Щось не злетіло з self-driving cars у автовиробників, еге ж? А стільки галасу було. Ну зат…
  4. Sep 24, 2026Ух, яку ж класну доповідь подивився: «Scott Jenson: Are we really going to use the same De…
  5. Sep 23, 2026Post #540
  6. Sep 21, 2026«Порекламую» вам український сайт, який мені дуже подобається. Взяв слово в лапки, бо як і…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →