Мои Конспекты
Главная | Обратная связь


Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Turbo Pascal , 60.0



Язык С++ , 62.0

Уничтожение экземпляра : Язык С++

Уничтожение экземпляра : Turbo Pascal

2. … class stroka {

char*ch// указатель на строку на символьный массив

int len // длина строки

public:

stroka( char*cch)// конструктор1

{ len = strlen(cch) ; ch=new char [len+1];

strcpy (ch,cch); } ;

stroka(int N=20) //конструктор 2

{ ch= new char[N+1}; len=0; ch[0]=’\0’}

int len_str(void) { return len;} //возвращает длину

//строки

char * string (void) {return ch;} // возвращает указатель на строку

void vivod ( ) // выводит данные

{ cout<< “строка: “ <<ch <<” , длина строки=”<<len;};

~stroka( ) //деструктор

{ delete []ch ;} ;

}

Void main ( )

{ stroka S1( “Миру-мир”);

S1.vivod;}

Деструктор автоматически освободит память.

Деструктор идеальное место для всей общей работы по очистке, напр.: освобождение памяти, сохранение данных в файлах , закрытие файлов…

 

 

Компонентные данные

1) При обращении к данным из компонентных функций используется только

имя компонента

2) При обращении к компонентам из операторов, выполняемых вне класса

( если позволяет статус доступа)

 

Имя объекта. имя компонента

указатель на объект -> имя компонента

3) Данные класса (а также компонентные функции) не обязательно должны быть описаны до первого обращения к ним в классе. Т.е. все компоненты класса видны во всех операторах его тела.

В связи с этим отличием введена особая область видимости –класс (наряду с файлом , блокоми функцией ).

 

4) Каждый объект класса имеет свою копию данных класса, кроме статических данных. Статический компонент (static)не тиражируется, существует в единственном экземпляре

 

Статические компоненты класса необходимо описывать и инициировать

вне определения класса как глобальные переменные.

 

Обращаться к ним можно до определения первого объекта класса с

помощью квалифицированного имени:

имя класса ::имя компонента

Если объекты объявлены, то к статическому компоненту можно

обращаться стандартно, и всякое изменение статического компонента в одном объекте становится видно во всех объектах.

Если статический элемент имеет статус privateили protectedк нему можно обращаться только из компонентных функций. Если надо обратиться до определения объектов, надо ввести статическую компонентную функцию, со спецификатором static,которую можно вызывать до определения объектов с помощью квалифицированного имени:

 

имя класса ::имя статической функции (параметры )

Пример:

Class cot

{ …;

static int N;// статический компонент

public: …

static void count(int value) { N = value} ;

};

int cot::N=0; //внешняя инициализация статического элемента

 

Void main ( )

{ cot::count(500); …

//изменение статического компонента до объявления объектов

}

 

5) Указатели на компоненты класса

 

Определение указателя на компонентные данные класса:

тип данных(имя класса ::*имя указателя)

В определение можно включить и инициализацию

& имя класса :: имя компонента

int ( stroka::*plen)=&stroka::len;

// -не верно, т.к.len –имеет статусprivate

При инициализации надо использовать общедоступные компоненты.

 

После объявления объекта к его компонентам следующий формат обращения через указатель:

 

имя объекта.* указатель на компонент данных;

Если определен указатель на объект формат обращения:

 

Указатель на объект-> *указатель на компонент данных ;

Определение указателей на компонентные функции

 

Тип возвращаемого результата ( имя класса ::*имя указателя на метод)

( спецификация параметров функции);

void (book::*fprt)(void) = & book::show_book ;

// определение указателя на компонентные функции класса book и

// инициализация указателя компонентной функцией show_book

И форматы обращения к методам через указатели:

 

Имя объекта.*указатель на метод(параметры);

Указатель на объект-> *указатель на метод ( параметры);

Пример:

book A (“C и C++”, “Б.И.Березин, 40.0); //определен объект

 

void (book::*fprt)(void) = & book::show_book ;

 

(A.*fptr) ( )// выведет на печать значения объекта

 

Если в определении класса было бы несколько идентичных функций указатель fptr можно “настроить” на другие функции

 




Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.