Функция –мүшелері static және const.
Әдетте функция-мүшелері былай шақырылады
Object.mem(I, j, k);
I,j,k айқын аргументтерінің айқын тізімі және айқын емес параметрлер тізімі,
Object I мүшелерінен тұрады.This нұсқағышының қатынауы арқылы,айқын емес параметрлерді параметрлер тізімін есептеуге болады.This нұсқағышын қолданушы ,басқасына қарағанда static функция-мүшесі басқа мүшелерге қатыныса алмайды.Өзінің айқын емес параметрлер const функция-мүшелерін өзгерте алмайды.
#include
class salary {
private:
int b-sal;
int your-bonus;
static int all_bonus;//жариялау
public:
salary (int b):b-sal(b) {}
void calc-bonus (double perc) {your-bonus=b_sal * perc;}
static void reset_all(int p) {all_bonus=p;}
int comp_tot( ) const
{return (b_sal+your_bonus +all_bonus);}
};
int salary::all_bonus=100;//жариялау және анықтама
main ( )
{
salary w1(1000),w2(2000);
w1.calc_bonus(0.2);
w2.calc_bonus(0.15);
salary::reset_all (400);//эквивалент w1.reset_all(400);
cout <<”w1” <<< “\n”;
}
Статистикалық мүше all_bonus контекстік файылда жарияланады.Salary айнымалы типі спецификалық әр түрлі тәуелсіз жарияланады.Статистикалық мүшеде сілтеме былай болады:
Salary::all_bonus
Модификатор const параметрлер тізімінің аяғында және кодтар денесінің басында пайда болады.Берілген мүшелер өз мәнінде өзгермейтіндігіне нұсқау береді.Бұл кодты өте сенімді қылады.Нәтижесінде операторлармен static
Функция-мүшесі шақырылуы мүмкін.
Демек,
Salary::reset_all(400);
W1.reset_all(400);
(&w2)--> reset_all (400);
эквиваленттілер.
Мұрагерлік
Мұрагерлік—ескі кластан жаңаға туындайтын тетік.Туындайтың класты құру үшін құрылған класқа толықтырулар немесе өзгертулер енгізуге болады.Класс құрылған кластан келесі түрде туындалуы мүмкін.
Class класс аты:(public/protected/private)орт
Базалық кластыңаты
{
мүшелерді хабарландыру
};
Әдеттегідей,түйінді сөз class-ты struct түйінді сөз өзгешелігімен алмастыруға болады,егер бүкіл мүшелері жасырын –public.Түйінді сөз көріну public,private және protected модификаторлары класс мүшелері үшін қолданылады.
Public мүшесі контекстік түрде, private мүшесі түрінде басқа функция мүшелері үшін ішкі меншікті классы.protected мүшесі түрінде басқа функция
мүшелер үшін ішкі классы және кез-келген класс,одан тікелей туындалатын.Көріну модефикаторы ішкі жарияланған класта кез-келген жиілікте қолданылуы мүмкін.
Параметрлі конструкторды иемделген базалық класс өзінен туындалған класта конструктордың болғанын талап етеді.Осындай конструктордың пішіні мына түрде берілген:
Класс аты (параметрлер тізімі): базалықкластың аты (базалық кластың параметрлер тізімі)
{
};
базалық кластың параметрлер тізімі базалық класқа сай конструкторды шақыру кезінде қолданылады және туындалған кластың конструкторлық денесі орындалғаннан бұрын орындалады.
Public туындалған классы,негізгі кластың ішкі типі болып табылады.Көп жағдайда туындалған кластың айнымалылары базалық кластың типі сияқты болып өнделеді.Базалық кластың нұсқағышы типіне жататын нұсқағыш,туындалған кластың public типіндегі объектке нұсқайды. Туындалған класқа сілтеме,егер ол керек болған жағдайда, базалық класына айқын емес қайтатуындалу сілтемесі туындайды.Базалық класқа сілтеме жариялауға болады және туындалған класты public объектісімен инициализиралауға болады.
Туындалған класқа мысал:
Class vect_bnd : public vect {
private :
Int l_bnd, u_bnd;
public :
vect_bnd ( );
vect_bnd(int,int);
int& operator[ ] (int);
int ub ( ) {return (u_bnd);}
int lb( ) {return (l_bnd);}
};
Бұл мысалда туындалған кластың конструкторлары базалық кластың конструкторларын параметрлер тізімінен кейін қос нүкте деңгейін щақырыды.
Мұрагерлік жиынтығы
Мұрагерлік жиынтығы туындалған класқа бірден артық емес класта құрылуына мүмкіндік береді.Кластың тақырыбының синтаксизі негізгі кластардың тізімін қосу үшін және оларға қатынас деңгейін кеңейту үшін керек.Мысалы:
Class tools{
. . .
};
class parts{
. . .
};
class labor {
. . .
};
class plans : public tools,public labor {
. . .
};
Бұл мысалда plans туындалған классы барлық кластың public мүшелерін иемденеді.Бұл мұрагерліктің байланысы бағытталған графты ілгішсіз мұрагерлік деп суреттеледі.(DAG).DAG-граф типті құрылымы,бұның торабы класты суреттейді,бағытталған доғалар базалықтан туындалған класқа бағытталған бағытты көрсетеді.
Егер туындалу кезінде әр түрлі кластардың мүшелерінің аттары бірдей болса,онда бұл бір мағыналықты туғызады.Бұндай мұрагерлік рұқсат етіледі,егер қолданушы мұндай мүшелерге бірыңғай сілтеме жасамаса.
Екі базалық кластың мұрагерлік жиыны жағдайында бірдей арғы тегінен туындалуы мүмкін.Егер де екі базалық класс бірдей тәсілден туындалған класта туындалса,бұл класс бірдей тектегі екі ішкі объектісі болады.Егер де бұл керек емес болса көшірмен virtual мұрагерлігін қолдану арқылы өшіруге болады.
Достарыңызбен бөлісу: |