Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2366.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
402.43 Кб
Скачать

XXX yyy; // скалярная переменная

Library L[10], *pl; // массив и указатель

class Class { /*... */ } // определение класса

Vl, v2[20]; // скалярная переменная и массив

Переменным vl и v2 присваивается тип Class, после чего для объявления других переменных достаточно указания типа Class, например:

Class v3, v4[10];

Переменную можно инициализировать другой переменной того же класса. Разрешается объявлять и ссылки на объекты с обязательной инициализацией.

Money х = t; // инициализация переменной

date y(d); // инициализация переменной

date &u = у; // обязательная инициализация ссылки

Если поля открыты, разрешается обычная инициализация полей инициализатором структуры, например:

class Person

{ public: string Fio; double Summa; };

Person Kupaev = { "Купаев М.", 10000.00 };

Указатели могут быть инициализированы так же, как и указатели на переменные встроенных типов:

Money *pt = new Money,*pp = pt,*ps; // обьявление указателей

ps = new Money; // и создание объектов

date *pd = new date(), *pr; // обьявление указателей

pr = new date(); // и создание объектов

Форма со скобками после типа выполняет обнуление полей динамического объекта.

Объекты класса разрешается определять в качестве полей другого класса:

class Count

{ Money Summa; // сумма на счете

unsigned long NumberCount; // номер счета

date D; // дата открытия счета

public:

void Display(); // вывод на экран

};

Использование объекта в качестве поля другого класса называется композицией.

Объекты класса можно передавать в качестве аргументов любыми способами (по значению, по ссылке, по указателю) и получать как результат из функции:

Money AddMoney(const Money &a, const Money &b); // по константной ссылке

Money Init(const long double &r); // возврат значения

void f1(date t); // по значению

void f2(date &t); //по ссылке

void f3(date *t): // по указателю

Функция, возвращающая объект класса, может быть использована для инициализации переменной класса:

Money t = Init(200,56); Money r = AddMoney(x,y);

Можно объявлять объекты-константы класса с обязательной инициализацией:

const Money k = р;

const date d(t);

const Money t = Init(200,50);

Доступ к открытым полям выполняется обычными для структуры способами:

объект.поле

указатель->поле

Вызов открытых методов осуществляется аналогично

объект.метод(параметры)

указатель->метод(параметры)

Для массива объектов обращение к открытому полю выполняется так:

имя_массива[индекс].поле

Аналогично выполняется и вызов метода для элемента массива

имя_массива[индекс].метод(аргументы)

Примеры

date d;

d.day = 21; d.month = 11; d.year = 2006;

d.print();

d.set(22,2,1953);

date DD[3]; DD[0].day = 12;

DD[0].next();

Library t;

int a = t.function(5);

Library *pt = new Library;

int b = pt->function(5);

Count A[5]; // обьявление массива

for(int i = 0; 1 < 5; i++)

A[i].Display(); // вывод элементов массива

Создаём для задания внешнюю функцию с именем make_mun(), где mun – тип реализуемой структуры. Эта функция получает в качестве аргументов значения для полей структуры и возвращает структуру требуемого типа.

Para make_para(int a, int b) {

Para c;

c.first = a;

c.second = b;

return c;

}

Для демонстрации созданного типа в методе main() объявляем переменные и вызываем методы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]