Почему пространство имен и класс имеют одинаковый синтаксис в C ++?

Пространства имен и классы — это две разные концепции в C ++. Пространство имен существует только для предотвращения конфликта имен, вместо этого класс является определяемым пользователем типом.

чем почему они используют то же самое :: синтаксис?

Например:

namespace::function();
class::function();

-4

Решение

Формируются как пространства имен, так и классы прицелы. Объем это концепция, которая работает довольно единообразно как с пространствами имен, так и с классами: есть область видимости класса и область видимости пространства имен в C ++ (как и в других видах областей). И с тех пор :: это оператор разрешения области, нет ничего необычного в том, что он используется с пространствами имен и классами синтаксически схожим образом.

6

Другие решения

Потому что классы, как и пространства имен, вводят (обычно именуемую) область видимости. Оператор разрешения области действия работает так же с классами и пространствами имен. Не будет никакого преимущества в добавлении большего количества операторов для того же.

Если классы не вводят область действия, возникнут проблемы:

struct buffer {
int size, *data;
};

struct list {
node* head;
int size; // oops, name conflict!
};

Очевидно, что классы должны вводить область действия для своих членов.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector