string (int j); //конструктор (объявление)
~strig(); //деструктор (объявление)
void shov_i(void); //ф-я член - класса (метод) объявление прототипа
}; //конец объявления класса
string::string(int j) //определение конструктора вне описания класса
{ i=j; cout<<"работает конструктор \n"; }
void String::Show_i(void) //определение метода вне класса
{cout << "i="<<i<< “\n”;} //тело метода
string::~string() //определение деструктора
{cout <<"работает деструктор \n";} //вывод потоком (при помощи
// переопределенной операции <<)
void main (void) {
string my_ob1 (25); //инициализация объекта my-ob1
string my_ob2 (36); //инициализация объекта my-ob2
my_ob1.show_i(); // вызовфункции show_i() класса string,для my_ob1
my_ob2.show_i();} // вызовфункции shon_i() класса string, для my_ob2
Результаты работы данной программы:
работает конструктор
работает конструктор
i=25
i=36
работает деструктор
работает деструктор
Деструкторы выполняются в обратной последовательности по отношению к конструкторам. Первым разрушается объект, созданный последним.
Помимо работы конструктора и деструктора данный пример демонстрирует и новые возможности ввода/вывода в С++. Включенный файл iostream.h описывает функции, обеспечивающие поддержку ввода/вывода потоком. Строка
cout<<"i="<<i<< “\n”;
приводит к выводу символьной строки i= значение i и обработке символа “\n”– новая строка. Оператор ввода значения переменной для int i1; выглядит следующим образом:
cin>>i1;
Отметим, что в С++ тип данных можно объявить в любом месте функции (не обязательно в ее начале).
Чтобы реализовать данный пример при помощи ключевого слова struct, достаточно изменить описание класса следующим образом:
struct string { private: int i;
public: string(int j); //объявление конструктора
~string(); // объявление деструктора
void show_i (void);}; // объявление метода класса
Смеси (union) в С++ также близки к классам. Фактически смесь - это та же структура (struct), в которой все компоненты-данные помещаются в одно и то же место памяти.
Рассмотрим пример объявления смеси в С++
/* СМЕСЬ В С++ */
#include<iostream.h>
#include<string.h>
union my_union
{ char str[22]; //компоненты
struct str1_2 //cмеси
{ char str1[9]; //имеют
char str2[12]; //атрибут public
} my_s; // my_s - объекттипа str1_2
my_union(char*s); //конструкторкласса
void print(void); //функция - метод класса
};my_union::my_union(char*s) //определение конструктора
{strcpy(str,s);} //функция копирования строки s в строку str.
void my_union::print(void)
{ cout<<my_s.str2<<”\n”;
//вывод элемента структуры str2 и перевод строки
my_s.str2[0]=0; //запись признака конца строки
cout<<my_s.str1<< “\n”; } //вывод значения str1 объекта my_s
void main (void)
{my_union ob ("Факультет исторический»);
//создание и инициализация объекта ob
ob.print(); // вызов ф-ии print() для ob }
РЕЗУЛЬТАТЫ ВЫПОЛНЕНИЯ:
1. Создается объект ob и для него вызывается конструктор, который копирует строку "Факультет исторический" в компонент класса str[22];
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.