Бьярн Страустрап - Справочное руководство по C++

Здесь есть возможность читать онлайн «Бьярн Страустрап - Справочное руководство по C++» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Справочное руководство по C++: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Справочное руководство по C++»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Справочное руководство по C++ — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Справочное руководство по C++», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

class X {

int; // X:: частный по определению

};

struct S {

int a; // S::a общий по определению

};

R.11.1 Спецификации доступа

Описания членов могут быть снабжены спецификацией доступа (§R.10):

спецификация-доступа: список-членов opt

Спецификация-доступа задает правила доступа к членам, которые действуют до конца жизни класса или пока не появится другая спецификация-доступа, например,

class X {

int a; // X::a частный по определению: учитывается 'class'

public:

int b; // X::b общий

int c; // X::c общий

};

Допустимо любое число спецификаций доступа и задавать их можно в любом порядке, например,

struct S {

int a; // S::a общий по определению: учитывается `struct'

protected:

int b; // S::b защищенный

private:

int c; // S::c частный

public:

int d; // S:: d общий

};

Порядок размещения членов, представляющих данные, которые имеют разные спецификации-доступа, определяется реализацией (§R.9.2).

R.11.2 Спецификации доступа для базовых классов

Если класс описан как базовый (§R.10) по отношению к другому классу с помощью спецификации доступа public, то члены со спецификацией public или protected из базового класса являются соответственно членами с той же спецификацией для производного класса. Если класс описан как базовый по отношению к другому с помощью спецификации доступа private, то члены со спецификацией public или protected из базового класса являются членами со спецификацией private для производного класса. Частные члены базового класса остаются недоступными даже для производных классов, если только для обеспечения доступа при описании базового класса не было использовано описание friend.

Если для базового класса не указана спецификация-доступа, то для производного класса, если он описан как struct, предполагается спецификация public, а если он описан со служебным словом class, то - спецификация private, например:

class B {/*… */};

class D1: private B {/*… */};

class D2: public B {/*… */};

class D3: B {/*… */}; // `B' частный по определению

struct D4: public B {/*… */};

struct D5: private B {/*… */};

struct D6: B {/*… */}; // `B' частный по определению

Здесь класс является общим (public) базовым классом для D2, D4 и D6 и частным (private) базовым классом для D1, D2 и D5.

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

В функциях-членах или друзьях класса X можно X* неявно преобразовывать в указатель на частный класс, являющийся непосредственно базовым по отношению к X.

R.11.3 Описания доступа

Используя уточненное имя, можно установить доступ к члену базового класса в части public или protected описания производного класса. Это называется описанием доступа.

Приведем пример:

class B {

int a;

public:

int b, c;

int bf();

};

class D: private B {

int d;

public:

B::c; // adjust access to `B::c'

int e;

int df();

};

int ef(D&);

Во внешней функции ef можно использовать только имена c, e, и df. Поскольку функция df член класса D, в ней можно использовать имена b, c, bf, d, e и df, но не a. Функция bf - член класса B и в ней можно использовать члены a, b, c и bf.

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

class B {

public:

int a;

private:

int b;

protected:

int c;

};

class D: private B {

public:

B::a; // описать `a' как общий член D

B::b; // ошибка: попытка расширить доступ,

// `b' не может быть общим членом D

protected:

B::c; // описать `c' как защищенный член D

B::a; // ошибка: попытка сузить доступ,

// `a' не может быть защищенным членом D

};

Описание доступа для имени перегруженной функции устанавливает доступ в базовом классе ко всем функциям с этим именем, например:

class X {

public:

f();

f(int);

};

class Y: private X {

public:

X::f; // makes X::f() and X::f(int) public in Y

};

Нельзя в производном классе установить доступ к члену базового класса, если в производном классе определен член с этим же именем, например:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Справочное руководство по C++»

Представляем Вашему вниманию похожие книги на «Справочное руководство по C++» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Справочное руководство по C++»

Обсуждение, отзывы о книге «Справочное руководство по C++» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x