
- •Базовые принципы объектно-ориентированного программирования.
- •Базовые конструкции объектно-ориентированных программ.
- •Конструктор и деструктор. Конструктор по умолчанию.
- •Конструктор копирования.
- •Конструктор explicit.
- •Указатель this.
- •Абстрактные типы данных.
- •Операторы для динамического выделения и освобождения памяти (new и delete).
- •Перегрузка и переопределение функций.
- •Перегрузка бинарных операторов.
- •Перегрузка унарных операторов.
- •19.20.Перегрузка оператора new.Перегрузка оператора delete.
- •22.Inline-функции.
- •23.Вложенные классы
- •24.Static-компоненты данные класса
- •25.26.Static и const-компоненты функции класса
- •27.Использование new delete для реализации массивов
- •28.Организация внешнего доступа к локальным компонентам класса(friend)
- •29.Ссылки.Параметры ссылки
- •30.Ссылки.Независимые ссылки
- •31.Инициализация компонент-данных объекта. Конструктор с параметрами.
- •33.Наследование. Открытое, защищенное и закрытое.
- •34.Виртуальные функции.
- •35.Множественное наследование.
- •36.Множественное наследование и виртуальные базовые классы
- •38.Proxi-классы.
- •39.40.Пространство имен. Пространство имен как объявление. Пространство имен как директива.
- •41.Виртуальные функции
- •42.Параметризированные классы (шаблоны).
- •43.Шаблоны функций.
- •44.Передача в шаблон класса дополнительных параметров.
- •44.Совместное использование шаблонов и наследования.
- •45.Шаблоны класса и friend.
- •46.Реализация smart-указателя.
- •48.Транзакции.
31.Инициализация компонент-данных объекта. Конструктор с параметрами.
Конструктору можно передавать аргументы. Для этого просто добавьте не-
обходимые параметры в объявление и определение конструктора. Затем при
объявлении объекта задайте параметры в качестве аргументов. Чтобы по-
нять, как это делается, начнем с короткого примерa:
#include<iostream>
using namespace std;
class A
{ int i,j;
public:
A(int a,int b);
int show();
};
A::A(int a,int b)
{ i=a,j=b;}
int A::show()
{ cout<<i<<' '<<j;
return 0;}
int main()
{
int x,y;
cout<<"Vvedite 2 celyh chisla\n";
cin>>x>>y;
A ob(x,y);
ob.show();
return 0;
}
_______________________________________________-
class myclass {int a;
public:
myclass (int x) ; // конструктор
void show ( )} ;
myclass: :myclass (int x)
{cout « "В конструкторе\n";
a = x;
void myclass: :show()
{cout « a « "\n";}
int main ( )
{myclass ob (4 ) ;
ob.show ( ) ;
return 0;}
_________________________________________________________-
#include<iostream>
using namespace std;
class Chelovek
{ protected:
int data_rozhdenia;
char *fio;
public:
Chelovek(char *f = "\0", int YEARB = 0);
~Chelovek()
{
delete [] fio;
}
void set();
void get();
};
Chelovek ::Chelovek(char *f, int YEARB)
{ int len = strlen(f);
fio = new char[len + 1];
if(!fio){cout<<"memory error\n"; exit(1);}
strcpy(fio, f);
data_rozhdenia=YEARB;
}
void Chelovek::set()
{ cout << "\n Chelovek name: ";
cin>>fio;
cout << endl;
cout << "\n Data_rozhdenia: ";
cin>> data_rozhdenia;
cout << endl;
}
void Chelovek::get()
{cout << "\nInput Chelovek name: ";
cout<<fio;
cout << endl;
cout << "\nInput Data_rozhdenia: ";
cout<<data_rozhdenia;
cout << endl;
}
int main()
{ char fio[80];int ye;
Chelovek chel(fio,ye);
chel.set();
chel.get();
return 0;}
32.Константные объекты и функции класса.
В С++ компоненты-функции могут использоваться с модификатором
static и const. Обычная компонента-функция, вызываемая object.function(a,b);
имеет явный список параметров a и b и неявный список параметров, состоящий из компонент данных переменной object. Неявные параметры можно представить как список параметров, доступных через указатель this. Статическая (static) компонента-функция не может обращаться к любой из компонент посредством указателя this. Компонента-функция const не может изменять неявные параметры.
#include<iostream>
using namespace std;
class cls
{
int kl; //kol-vo izdelij
double zp; //z/p na pr-vo 1 izdeliya
double nl1,nl2;//2 naloga na z/pl
double sr; // kol-vo syr'ya na pr-vo 1 izdeliya
static double cs;
public:
cls(){};
~cls(){};
void inpt(int);
static void vvod_cn(double);
double seb()const;
};
double cls::cs; //yavnoe opredelenie static-chlena v kontexte faila
void cls::inpt(int k)
{
kl=k;
cout<<"Vvedite z/p i 2 naloga\n";
cin>>nl1>>nl2>>zp;
}
void cls::vvod_cn(double c)
{cs=c; //can obrashchat'sya v f-cii only k static-komponentam
}
double cls::seb()const
{return kl*(zp+zp*nl1+zp*nl2+sr*cs);}// v f-cii nel'zya change ni odin
void main()// neyavnyj parametr(kl zp nl1 nl2 sr)
{
cls c1,c2;
c1.inpt(100); //inicializaciya 1-go obj
c2.inpt(200); //inicializaciya 2-go obj
cls::vvod_cn(500.);
cout<<"\nc1"<<c1.seb()<<"\nc2"<<c2.seb()<<endl;}