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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Отметим, что одно имя может обозначать несколько функций-членов при условии, что их типы достаточно отличаются друг от друга (§R.13). Укажем, что описатель-члена не может содержать инициализатора (§R.8.4). Инициализация члена возможна с помощью конструктора, см. §R.12.1.

Член не может иметь спецификацию auto, extern или register.

Конструкция спецификации-описания может отсутствовать только в описании функции. Конструкция список-описателей-членов может опускаться только после конструкций спецификация-класса, спецификация-перечисления или спецификация-описания, если последняя имеет вид friend спецификация-сложного-типа. Конструкция спецификация-чистой используется только при описании виртуальной функции (§R.10.2).

Если члены являются объектами классов, то эти классы должны быть ранее описаны. В частности, класс C1 не может содержать объект класса C1, но может содержать указатель или ссылку на класс C1. Если в типе нестатического члена используется массив, то все размеры всех индексов массива должны быть указаны.

Приведем простой пример описания класса:

struct tnode {

char tword[20];

int count;

tnode *left;

tnode *right;

};

Здесь класс содержит массив из двадцати символов, целое и два указателя на ту же структуру. После появления такого описания следующее:

tnode s, *sp;

задает s как объект типа tnode и sp как указатель на tnode. С учетом этих описаний s-›count обозначает член count структуры, на которую указывает sp; s.left обозначает указатель left на поддерево структуры s; s.right-›tword[0] обозначает первый символ члена tword поддерева структуры s, на которую указывает right.

Нестатические члены класса, представляющие данные и описанные подряд и без использования спецификации-доступа, размещаются внутри объекта типа класс так, что позже описанные члены имеют большие адреса. Порядок размещения таких членов, если их описание перемежается описаниями со спецификацией-доступа, зависит от реализации (§R.11.1). Принятые в реализации правила выравнивания могут привести к тому, что два соседних члена не будут располагаться сразу друг за другом. К этому же могут привести правила выделения памяти для виртуальных функций (§R.10.2) и виртуальных базовых классов (§R.10.1); см. также §R.5.4.

Функция-член (§R.9.3), имя которой совпадает с именем класса, является конструктором (§R.12.1). Имя статического члена данных, элемента перечисления, члена безымянного объединения или вложенного типа не может совпадать с именем класса.

R.9.3 Функции-члены

Функция, описанная как член (без спецификации friend §R.11.4), называется функция-член и вызывается в соответствии с синтаксисом члена класса (§R.5.2.4), например:

struct tnode {

char tword[20];

int count;

tnode *left;

tnode *right;

void set(char*, tnode* l, tnode *r);

};

Здесь set является функцией-членом и может вызываться так:

void f(tnode n1, tnode n2)

{

n1.set("abc",&n2,0);

n2.set("def",0,0);

}

Считается, что определение функции-члена принадлежит области видимости ее класса. Это означает, что в функции-члене (если она нестатическая, §R.9.4) можно непосредственно использовать имена членов ее класса. В статической функции-члене можно непосредственно использовать имена только статических членов, элементов перечисления и вложенных типов. Если определение функции-члена находится вне описания класса, ее имя следует уточнить именем класса с помощью операции ::, например:

void tnode::set(char* w, tnode* l, tnode* r)

{

count = strlen(w)+1;

if (sizeof(tword)‹=count)

error("tnode string too long");

strcpy(tword,w);

left = 1;

right = r;

}

Обозначение tnode::set указывает, что функция set является членом и находится в области видимости класса tnode. Имена членов tword, count, left и right относятся к членам того объекта, с именем которого вызывалась Поэтому в вызове n1.set("abc",&n2,0) tword обозначает n1.tword, а в вызове n2.set("def",0,0) tword обозначает n2.tword. Функции strlen, error и strcpy должны быть описаны где-то в программе.

Члены можно определять (§R.3.1) вне описания класса; если в описании класса они были описаны, но не определены, их не следует описывать заново, см. §R.3.3. После определения класса функции-члены этого класса можно использовать при описании друзей. Всякая вызываемая в программе функция-член должна иметь в точности одно определение.

Результат вызова нестатической функции-члена (§R.9.4) класса X, когда она вызывается не с объектом класса X, неопределен.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x