[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Ключовата дума „онуй“ в C++
From: |
Dimitur Kirov |
Subject: |
Re: Ключовата дума „онуй“ в C++ |
Date: |
Mon, 25 Dec 2023 08:31:09 +0200 |
Здравей,
Това е просто име на променлива. Понякога кръщават променливите така, когато
желаното име
е заето като ключова за езика дума this<->that, class<->clazz и т.н. В случая
нито
"this", нито "that" е подходящо, a по-скоро "from" или "source".
Семантично е обяснено тук:
https://en.cppreference.com/w/cpp/language/move_constructor
Move constructor замества copy contructor в случаи, когато съдържанието трябва
да се
премества, вместо да се копирва.
----
За „окепазен по презюмция език“ съм съгласен. Жалко, че всички ученически
олимпиади се
провеждат на този език.
Поздрави,
Д.Киров
On Sun, 24 Dec 2023 22:57:44 +0200
Yavor Doganov <yavor@gnu.org> wrote:
> Здравейте,
>
> За голямо мое съжаление, напоследък ми се налага да редактирам код на
> 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
>