У C++ окрім ключових слів які завжди означають щось одне є ідентифікатори спеціального призначення які можна використовувати як звичайні ідентифікатори(назви), але у деяких конкретних місцях вони розуміються компілятором як ключове слово.
Такими словами є final
, override
, import
і module
. Ці ідентифікатори можуть використовуватись як назви змінних, констант, функцій, класів/структур чи іншого, але у спеціальних місцях вони набувають властивостей ключового слова.
import <iostream>;
struct override {
int module;
};
int main() {
override final{4};
std::cout << final.module << std::endl;
}
Різні слова можна використовувати у різних місцях. Наприклад слова final
, module
і import
не вийде використовувати у ролі назви класу, структури чи перечислення оскільки тут вони розуміються як ключові слова. Але це тільки у глобальному просторі імен якщо запхати клас у namespace
, то все запрацює.
import <iostream>;
namespace x {
struct module {
int override;
};
}
int main() {
x::module final{4};
std::cout << final.override << std::endl;
}
Але щоб не плутати інших і себе також краще не використовувати їх так.
#cpp #cxx #final #override #import #module #cpp20 #keywords #namespace #special_identifiers #ключові_слова #спеціальні_ідентифікатори