
- •Конструкторы и деструкторы
- •Формат компонентной функции-деструктора
- •Void main () {
- •Void main()
- •Void main()
- •Конструктор с аргументами, задаваемыми по умолчанию
- •Void main ()
- •Void shownumber ( void)
- •Конструктор по умолчанию
- •Конструктор копирования
- •Определение конструктора копирования
- •Void main ( )
- •Void main ( )
- •Void vivod ( ) // выводит данные
- •Void main ( )
- •Имя класса ::имя компонента
- •Void main ( )
- •Тип данных(имя класса ::*имя указателя)
- •Имя объекта.* указатель на компонент данных;
- •Имя объекта.*указатель на метод(параметры);
- •Компонентные функции
- •Initgraph( тип графического драйвера, режим адаптера , путь к драйверу)
- •Void initgraph (int far * graphdriver, int far * graphmode, char far * pathtodriver);
- •Void point :: show (void)
- •Void point :: hide(void)
- •Void main ( )
- •Указатель this
- •Void print ( void) void print ( void)
- •Void main ()
- •Void que::add(void)
- •Void que::print (void)
- •Void main( )
Void main()
{ book a1 ("Хождение по мукам",34.5);
cout<<a1.name;
}
#include <iostream.h>
#include <string.h>
struct goods {
char name [40];
float price;
goods (char* newn, float newpr)
{
// name=newn - ошибка (lvalue required )
strcpy(name,newn); price=newpr;};
};
Void main()
{ goods b1 ("Шляпа",12.5);
cout<<b1.name;
}
Итак, конструктор автоматически вызывается при создании объекта, при этом объект инициализируется с помощью фактических параметров передаваемых в тело конструктора.
Заключение:
Экземпляры класса в программе могут создаваться статически и динамически.
1) Определение статического экземпляра класса:
<имя класса> <имя объекта> ( параметры конструктора);
Пустой список параметров не допустим, если в классе конструктор с параметрами
2) Определение массива статических экземпляров класса:
<имя класса> <имя массива> [размер массива] =
{ <имя класса>( параметры конструктора для 0-го экземпляра), …,
<имя класса> ( параметры конструктора для последнего экземпляра)
};
3) Определение динамического экземпляра класса:
<имя класса> * <имя указателя на объект> = new <имя класса> ( параметры конструктора);
4) Определение массива динамических экземпляров класса:
а)
<имя класса> * <имя массива указателей на объекты> [разм. массива] = { new <имя класса> ( параметры конструктора для 0-го экземпляра), …, new<имя класса>( параметры конструктора для последнего экземпляра) };
б)
cin>>n; // количество экземпляров
<имя класса>**<имя двойного указателя> = new <имя класса>*[n];
for( int i=0 ; i<n; i++)
<имя двойного указателя>[i] =new <имя класса> ( параметры
конструктора для i-го экземпляра);
Можно создавать безымянный объект при инициализации другого объекта
<имя класса > (фактические параметры конструктора); // нет имени
{
…
goods tip5 ( “Пальто” , 20000); //обычно
good tip6 = good ( “Шуба” , 100000);
// создается безымянный объект, значения которого используются, напр., в //инициализации вновь созданного объекта tip6
}
Конструктор с аргументами, задаваемыми по умолчанию
Этот конструктор позволяет при его вызове с параметрами инициализировать данные создаваемого объекта указанными значениями параметров.
Но возможен вызов конструктора (или создание объекта) и без параметров, при этом данные инициализируются значениями по умолчанию.
Для класса Men конструктор с умалчиваемыми значениями параметров:
Men (char*n = “ ”, int a =0)
// значения по умолчанию имя – пробел, возраст -0
{name=n; age = a; }
/* Такой конструктор можно вызвать без параметров. Если такой конструктор вызвать без параметров, то создаваемый объект будет инициироваться значениями по умолчанию.
Вызов того же конструктора с параметрами будет инициировать данные создаваемого объекта значениями параметров */