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

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;}

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