[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Ключовата дума „онуй“ в C++
From: |
Yavor Doganov |
Subject: |
Ключовата дума „онуй“ в C++ |
Date: |
Sun, 24 Dec 2023 22:57:44 +0200 |
User-agent: |
Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (Gojō) APEL-LB/10.8 EasyPG/1.0.0 Emacs/29.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) |
Здравейте,
За голямо мое съжаление, напоследък ми се налага да редактирам код на
C-пляс-пляс. Познанията ми за този язык са твърде оскъдни [1] и ми е
страшно трудно, а наскоро попаднах на новото за мен „онуй“ (that).
Горе-долу ми е ясно какво е туй „туй“ (this), но туй „онуй“ (that)
виждам за пръв път. Ето пример от пакета trafficserver, на който се
натъкнах, докато се опитвам да разреша #999938 [2] в Дебиан:
В include/tscore/Regex.h е декларирано:
class Regex
{
public:
...
Regex() = default; // Конструкторот, но нема дефиниция.
Regex(Regex const &) = delete; // No copying. // Копи-конструкторот?
Regex(Regex &&that) noexcept; // Що е това?
~Regex(); // Деструкторот.
...
private:
pcre *regex = nullptr;
pcre_extra *regex_extra = nullptr;
};
А дефиницията на метода в src/tscore/Regex.cc е:
Regex::Regex(Regex &&that) noexcept : regex(that.regex),
regex_extra(that.regex_extra)
{
that.regex = nullptr;
that.regex_extra = nullptr;
}
Какво прави този метод и каква е ролята на туй „онуй“ (that)? Emacs
не оцветява тази дума, така че това или е нещо съвсем ново, или въобще
не е ключова дума, а приумица на авторите на trafficserver. При
всички случаи бих искал да знам за какво става въпрос.
Благодаря предварително!
[1] Даже бих казал, че човек с моите „познания“ и чиста съвест не би
се докоснал до такъв код, за да не го окепази, но аз не съм с
чиста съвест и освен това смятам, че C++ е окепазен по презумпция.
[2] https://bugs.debian.org/999938
- Ключовата дума „онуй“ в C++,
Yavor Doganov <=