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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Для разделения частей программы на ANSI C и C++ можно использовать условную трансляцию с предописанным именем __cplusplus.

Функции, которые могут вызываться из программ на обеих языках, должны быть явно описаны, как функции, подлежащие связыванию с С.

R.18.3 Анахронизм

Реализация C++ может включать перечисленные здесь расширения, чтобы облегчить использование программы на С, или чтобы упростить переход с более ранних версий С++. Отметим, что с каждым расширением связаны нежелательные последствия. Если реализация предоставляет такое расширение, то она должно также предоставлять возможность убедиться в отсутствии этих последствий для исходной программы. Реализация C++ не обязана обеспечивать эти расширения.

При описании или определении функции можно использовать слово overload в конструкции спецификация-описания (§R.7). Если оно используется в спецификации-описания, то считается служебным словом и его нельзя использовать как идентификатор.

Определение статического члена класса, представляющего данные, для которого дана стандартная инициализация нулями (§R.8.4, §R.9.4), может быть опущено.

Можно использовать команды препроцессора старого стиля (до ANSI C).

Можно присваивать объекту типа перечисления значение типа int.

При удалении массива, тип которого не имеет деструктора, можно указывать число элементов; §R.5.3.4.

Одна функция operator++() может использоваться для перегрузки как префиксных, так и постфиксных операций ++; тоже верно для операции --; §R.13.4.6.

R.18.3.1 Определения функций старого стиля

Можно использовать синтаксис С для определений функций:

старое-определение-функции:

спецификации-описаний optстарый-описатель-функции

список-описаний optтело-функции

старый-описатель-функции:

описатель ( список-параметров opt)

список-параметров:

идентификатор

список-параметров , идентификатор

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

max(a,b) int b; { return (a‹b) ? b : a; }

Если определенная таким образом функция не была описана ранее, то тип ее формальных параметров полагается (…), т.е. он не будет проверяться.

Если она была описана, то тип должен согласовываться с типом, указанным в описании.

Приведенный синтаксис нельзя использовать для определения функций-членов.

R.18.3.2 Старый стиль задания инициализатора базового класса

В конструкции инициализатор-памяти (§R.12.6.2) можно не указывать имя-класса, обозначающее базовый класс при условии, что существует только один прямой (непосредственный) базовый класс. Поэтому в описании

class B {

//…

public:

B(int);

};

class D: public B {

//…

D(int i): (i) {/*… */}

};

будет вызываться конструктор B с параметром i.

R.18.3.3 Присваивание указателю this

Присваивая определенные значения указателю this, пользователь мог управлять выделением памяти для объекта некоторого класса. В конструкторе до использования членов класса можно было с помощью такого присваивания реализовать свой алгоритм выделения памяти. Присваивая в деструкторе указателю this нуль, можно было обойти стандартную операцию освобождения объектов класса. Кроме того, присваивание нуля в деструкторе отменяло неявные вызовы деструкторов для членов и базовых классов, например:

class Z {

int z[10];

Z() { this = my_allocator(sizeof(Z)); }

~Z() { my_deallocator(this); this = 0; }

};

Если выделение памяти уже произошло (как бывает для членов и объектов auto или static), то при входе в конструктор this имеет ненулевое значение и значение нуль в противном случае.

Вызовы конструкторов для членов и базовых классов произойдут только после того, как this получил значение. Если в конструкторе базового класса есть присваивание this, то новое значение this будет использоваться и в конструкторах производных классов, если они есть.

Отметим, что при наличии указанного анахронизма или тип указателя this не может быть *const, или нужно делать исключение для this из правила о присваивании указателям со спецификацией const.

R.18.3.4 Приведение указателей на функцию-член

Указатель на функцию-член некоторого объекта можно привести к указателю на какую-то другую функцию, например (int (*) ())p-›f. Результирующий указатель будет настроен на функцию, вызов которой будет происходить с помощью обращения к этой функции-члену для того же объекта. Как обычно результат такого вызова считается неопределенным.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x