C++ - Страустрап Бьярн, Хилл Мюррей
-
Название:C++
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Страниц:161
-
Рейтинг:
-
Ваша оценка:
Основным термином С++ является класс. Класс – это вид, который определяет сам пользователь. Классы обеспечивают анонимность данных, обеспеченную инициализацию информации, смутное преобразование видов для видов, определенных эксплуатантом, меняющееся задание вида, управляемые пользователем контроль над памятью и механизмы перезагрузки процессов. С++ предоставляет более качественные, чем в C, средства выражения модульного принципа программы и проверки видов. В языке также присутствуют апгрейды, не связанные напрямую с классами, включающие в себя символические постоянные, параметры функции по умолчанию, inline-подстановку функций, операции управления свободной памятью и ссылочный тип, перезагруженные имена функций. В С++ сохранены потенциалы языка C по работе с заглавными предметами машинного обеспечения (байты, биты, адреса, слова и т.п.). Это дает шанс весьма продуктивно воспроизводить виды, определяемые эксплуатантом.
С++ и его библиотеки установленные по умолчанию спроектированы так, чтобы гарантировать переносимость. Имеющееся на данный временной отрезок воспроизводство языка будет идти в большинстве систем, которые в состоянии поддерживать C. Из С++ программ возможно прибегать к пользованию C библиотеки, и с С++ возможно прибегать к пользованию большей части инструментальных средств, поддерживающих программирование на C.
Эта книга рассчитана в первую очередь для того, чтобы оказать помощь опытным программистам изучить язык и применять его в нестандартных проектах. В ней дано полное описание С++, множество фрагментов программ и примеров.
C++ - Страустрап Бьярн, Хилл Мюррей читать онлайн бесплатно полную версию книги
8.5.9 Видимость имен членов
Члены класса, описанные с ключевым словом class, являюся закрытыми, то есть, их имена могут использоваться только функциями членами (#8.5.2) и друзьями (см. #8.5.10), если они не стоят после метки «public:». В этом случае они являются открытыми. Открытый член может использоваться любой функцией. Struct является классом, все члены которого общие, см. #8.5.12.
Если производный класс описан как struct или если перед именем базового класса в описании производного класса стоит ключевое слово public, то общие члены базового класса являюся общими для производного класа; в остальных случаях они яляются закрытыми. Открытый член mem закрытого базового класса base может быть описан как общий для производного класса с помощью опиисания вида
typedef-имя :: идентификатор ;
в котором typedef-имя обозначает базовый класс, а идетификатор есть имя члена базового класса. Такое описание должно стоять в открытой части производного класса. Рассморим
class base (* int a; public: int b, c; int bf(); *);
class derived : base (* int d; public: base::c; int e; int df(); *);
int ef(derived amp;);
Внешняя функция ef может использовать только имена c, e и df. Являясь членом производного derived, функция df может использовать имена b, c, bf, d, e и df, но не a. Являясь члном базового base, функция bf может использовать члены a, b, c и bf.
8.5.10 Друзья
Друг класса – это функция не-член, которая может исползовать имена закрытых членов. Друг не принадлежит области вдимости класса и не вызывается с помощью синтаксиса выбора члена (если он не является членом другого класса). Следующий пример иллюстрирует различия между членами и друзьями:
class private (* int a; friend void friend_set(private*, int); public: void member_set(int); *);
void friend_set (private* p, int i) (* p-»a = i; *)
void private::member_set (int i) (* a = i; *)
private obj; friend_set ( amp;obj,10); obj.member_set (10);
Если описание friend отностися к перегруженному имени или операции, то другом становится только функция, задаваемая типами параметров. Член класса cl1 может быть другом класса cl2. Например:
class cl2 (* friend char* cl1::foo(int); // ... *);
Все функции класса cl1 могут быть сделаны друзьями класа cl2 с помощью одного описания
class cl2 (* friend class cl1 ; // ... *);
Функция член, определенная (#10) в описании класса, яляется inline.
8.5.11 Функция операция
Большинство операций могут быть перегружены с тем, чтобы они могли получать в качестве операндов объекты класса.
имя_функции_операции: operator операция
операция: одна из new delete + – * / % ^ amp; ! ~ ! = « » += -= *= /= %= ^= amp;= != «„ “» «„= “»= == != «= »= amp; amp; !! ++ – () []
Последние две операции – это вызов функции и индексирвание. Функция операция (за исключением operator new и operator delete; см. #7.2) должна быть или функцией членом, или получать по меньшей мере один классовый параметр. См. также #7.16.
8.5.12 Структуры
Структура есть класс, все члены которого общие. Это знчит, что
struct s (* ... *); эквивалентно
class s (* public: ... *);
Структура может иметь функции члены (включая конструктры и деструкторы). Базовй класс производной struct является открытым. Это значит, что
struct s : d (* ... *);
эквиволентно
class s : public b (* public: ... *);
8.5.13 Объединения