Читаем Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT полностью

 void PrintDimention(void) {cout << Rectangle PrintDimention << ‘\n’}

};

// Главная функция

void main(void) {

 // Определяем объект порожденного класса

 Rectangle rectObject;

 // Определяем указатель на объект порожденного класса

 // и инициализируем его

 *Rectangle ptrRectObject = &rectObject

 // Определяем указатель на объект базового класса Figure

 // и записываем в него адрес объекта порожденного класса.

 *Figure ptrFigObject = &rectObject

 // Вызываем методы класса Rectangle, используя имя объекта

 rectObject.PrintName;

 rectObject.PrintDimention;

 cout << '\n';

 // Вызываем методы класса базового класса Figure

 rectObject.Figure::PrintName;

 rectObject.Figure::PrintDimention;

 cout << '\n';

 // Вызываем методы класса Rectangle, используя указатель на

 // объекты класса Rectangle

 ptrRectObject->PrintName;

 ptrRectObject->PrintDimention;

 cout << '\n';

 // Вызываем методы класса Rectangle, используя указатель на

 // объекты класса Figure

 ptrFigObject->PrintName;

 ptrFigObject->PrintDimention;

}

Если вы запустите приведенную выше программу, она выведет на экран следующую информацию:

Rectangle PrintName

Rectangle PrintDimention

Figure PrintName

Figure PrintDimention

Rectangle PrintName

Rectangle PrintDimention

Figure PrintName

Figure PrintDimention

<p>Абстрактные классы</p>

Виртуальные методы могут быть объявлены как чисто виртуальные. Для этого после описания метода указывается специальный спецификатор (= 0). Он означает, что описанные методы не определены.

Класс в котором определен хотя бы один чисто виртуальный метод называется абстрактным. Нельзя создавать объекты абстрактного класса. Абстрактный класс может использоваться только в качестве базового класса для построения других классов.

Класс, порожденный от абстрактного класса, должен переопределять описанные в нем чисто виртуальные методы. В противном случае этот класс также будет абстрактным.

В качестве примера абстрактного класса мы приведем класс Abstract, в котором описан чисто виртуальный метод PureFunc. Обратите внимание, что этот метод не определен в классе Abstract. Определение метода содержится только в порожденном классе Fact.

// Абстрактный класс Abstract

class Abstract {

public:

 // Чисто виртуальный метод, не имеет определения

 virtual int PureFunc(void) = 0;

 void SetValue(int i) {iValue = i;}

 int iValue;

};

// Класс Fact

class Fact : public Abstract {

 int PureFunc(void) {return iValue * iValue;}

};

<p>Структуры</p>

Понятие структуры в языке Си++ значительно расширено. Структура в Си++ обладает всеми возможностями классов. В структуры Си++ можно включать не только элементы данных, но и методы. Вы можете наследовать от структур новые структуры, точно также как вы наследуете новые классы от базовых классов.

Различие между структурами и обычными классами заключается только в управлении доступом к их элементам. Так, если элементы класса по умолчанию объявлены как private, то все элементы структуры по умолчанию объявлены как public.

Ниже мы привели пример объявления структуры StructData и класса ClassData, которые содержат одинаковые элементы с одинаковыми правами доступа к ним. Фактически, структура StructData и класс ClassData совершенно равнозначны.

//====================================================

// Класс ClassData

class ClassData {

 int iPrivateValue;

public:

 int iPublicValue;

};

//====================================================

// Структура StructData

struct StructData {

 int iPublicValue;

private:

Перейти на страницу:

Все книги серии Библиотека системного программиста

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных