C++ - Страустрап Бьярн, Хилл Мюррей
-
Название:C++
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Страниц:161
-
Рейтинг:
-
Ваша оценка:
Основным термином С++ является класс. Класс – это вид, который определяет сам пользователь. Классы обеспечивают анонимность данных, обеспеченную инициализацию информации, смутное преобразование видов для видов, определенных эксплуатантом, меняющееся задание вида, управляемые пользователем контроль над памятью и механизмы перезагрузки процессов. С++ предоставляет более качественные, чем в C, средства выражения модульного принципа программы и проверки видов. В языке также присутствуют апгрейды, не связанные напрямую с классами, включающие в себя символические постоянные, параметры функции по умолчанию, inline-подстановку функций, операции управления свободной памятью и ссылочный тип, перезагруженные имена функций. В С++ сохранены потенциалы языка C по работе с заглавными предметами машинного обеспечения (байты, биты, адреса, слова и т.п.). Это дает шанс весьма продуктивно воспроизводить виды, определяемые эксплуатантом.
С++ и его библиотеки установленные по умолчанию спроектированы так, чтобы гарантировать переносимость. Имеющееся на данный временной отрезок воспроизводство языка будет идти в большинстве систем, которые в состоянии поддерживать C. Из С++ программ возможно прибегать к пользованию C библиотеки, и с С++ возможно прибегать к пользованию большей части инструментальных средств, поддерживающих программирование на C.
Эта книга рассчитана в первую очередь для того, чтобы оказать помощь опытным программистам изучить язык и применять его в нестандартных проектах. В ней дано полное описание С++, множество фрагментов программ и примеров.
C++ - Страустрап Бьярн, Хилл Мюррей читать онлайн бесплатно полную версию книги
typedef-имя должно означать ранее описанный класс, назваемый базовым классом для описываемого класса. Говорится, что последний выводится из предшествующего (является проиводным от него). По поводу смысла public см. #8.5.9. На члены базового класса можно ссылаться так, как если бы они были членами производного класса, за исключением тех случаев, кода имя базового члена было переопределено в производном класе; в этом случае для ссылки на скрытое имя можно использвать операцию :: (#7.1). Производный класс сам может использоваться в качестве базового класса. Невозможно стристь производные от union (#8.5.13). Указатель на производный класс может неявно преобразовываться в указатель на открытый
базовый класс (#6.7).
Для объектов класса, производного от класса, для которго была определена operator= (#8.5.11), присваивание неявно не определено (#7.14 и #8.5)
Например:
class base (* int a, b; *);
class derived : public base (* int b, c; *);
derived d;
d.a = 1; d.base::b = 2; d.b = 3; d.c = 4;
осуществляет присваивание четырем членам d.
8.5.4 Виртуальные функции
Если базовый класс base содержит virtual (виртуальную) (#8.1) функцию vf, а производный класс derived также содержит функцию vf, то обе функции должны иметь один и тот же тип, и вызов vf для объекта класса derived вызывает derived::vf. Например:
struct base (* virtual void vf (); void f (); *);
class derived : public base (* void vf (); void f (); *);
derived d; base* bp = amp;d; bp-»vf(); bp-»f();
Вызовы вызывают, соответственно, derived::vf и base::f для объекта класса derived, именованного d. Так что интерпртация вызова виртуальной функции зависит от типа объекта, для которого она вызвана, в то время как интерпретация вызова нвиртуальной функции зависит только от типа указателя, обознчающего объект.
Виртуальная функция не может быть другом (friend) (#8.5. 10). Функция f в классе, выведенном из класса, который имеет виртуальную функцию f, сама считается виртуальной. Виртуалная функция в базовом классе должна быть определена. Виртальная функция, которая была определена в базовом классе, не обязательно должна определяться в производном классе. В этом случае во всех вызовах используется функция, определенная для базового класса.
8.5.5 Конструкторы
Функция член с именем, совпадающим с именем ее класса, называется конструктором. Если класс имеет конструктор, то он вызывается для каждого объекта этого класса перед тем, как этот объект будет калибо использован, см. #8.6.
Конструктор не может быть virtual или friend.
Если класс имеет базовый класс или объекты члены с контрукторами, их конструкторы вызываются до конструктора проиводного класса. Первым вызывается конструктор базового класа. Объяснение того, как для таких конструктороу могут специфицироваться параметры , см. в #10, а того, как контрукторы могут использоваться для управления свободной пмятью, см. в #8.5.8.
Объект класса с конструктором не может быть членом обединения.
Для конструктора нельзя задать возвращаемое значение, как нельзя использовать оператор return в теле конструктора.
Конструктор может явно применяться для создания новых объектов его типа используя синтаксис
typedef-имя ( список_параметров opt )
Например,
complex zz = complex (1,2.3); cprint (complex (7.8,1.2));
Объекты, созданные таким образом, не имеют имени (если только конструктор не использован как инициализатор, как это было с zz выше), и их время жизни ограничено областью видмости, в которой они созданы.