4–Дәріс. Класс достары. Кластарға арналған стандартты операцияларды қайта жүктеу
Класс достары. Кластарға арналған стандартты операцияларды қайта жүктеу
Достық функциясының ерекшеліктері
Кластарға арналған операциялардың қайта жүктелуі(перезагрузка)
Көшіріп алу конструкторы. Беттік және тереңдетілген көшіріп алу
Кейбір жағдайларда класс мүшесі болмауына қарамастан функция бұл кластың жабық мүшелеріне деген қатынау мүмкіншілігіне (доступ) ие болған жөн. С++ осы әрекетті орындауға мүмкіндік береді, егер функция класс досы немесе мүшесі болып табылатын класты friend қызметші сөзі көмегімен жарияласа.
Дос функциялары мен класстарды қолданудың бірқатар маңызды қызық ерекшеліктерін көрсететін мысалды қарастырайық:
#include
сlass Class1; // класты алдын ала жариялау
class Class2;
{ public : void ff (Class1 & ref);
};
class Class1
{ private : int x;
// дос функциялары мен кластарға арналған жол беру спецификаторы
// мәні жоқ
friend int main (void); // main – достық функциясы бола алады
friend void f (Class1 f ref);
friend class Class3; // Class3 барлық әдістері Class1 класына дос бола алады
friend void Class2 : : f f (Class1 & ref);
}; //Class1 анықтамасының соңы class Class3 // Class3 – Class1 класына дос
{ public : void func (Class1 & ref)
{ ref.x=9;
return;
}
};
void Class2 : : f f (Class1 & ref)
{ ref.x=11;
return;
}
//f – Class1 класына дос қарапайым сыртқы фнукция
void f (Class1 & ref)
{ ref.x=7;
return;
}
int main (void)
{Class1 obj1;
obj1.x=5;
cout << “obj.1x=” << obj1.x << endl; //x=5
f(obj1);
cout<<“obj1.x=” << obj1.x <Сlass3 obj3;
obj3.func(obj1)
cout<< “obj1.x=” << obj1.x <
Class2 obj2;
Obj2.ff(obj1);
Cout<< “obj1.x=” <
return 0;
} // main соңы
Достарыңызбен бөлісу: |