ВУЗ:
Составители:
Рубрика:
Dog(char *nm):Pet(nm){};
};
struct Cat:public Pet
{
virtual void speak()
{cout<<name<<“ ɝɨɜɨɪɢɬ “<<“ Ɇɹɭ-Ɇɹɭ”<<endl;}
Cat(char *nm):Pet(nm){};
}
int main()
{
Pet *mypets[]={new Dog(“ɒɚɪɢɤ”), new Cat(“Ɇɭɪɤɚ”),
new Dog(“Ɋɵɠɢɣ“)}; // ɋɩɢɫɨɤ ɠɢɜɨɬɧɵɯ
const int sz=sizeof(mypets)/sizeof(mypets[0]);
for(int k=0: k<sz; k++)
mypets[k]->speak();
return 0;
}
4.6. «Ⱦɪɭɠɟɫɬɜɟɧɧɵɟ» (friend) ɮɭɧɤɰɢɢ
Ɏɭɧɤɰɢɹ, ɨɛɴɹɜɥɟɧɧɚɹ ɜ ɩɪɨɢɡɜɨɞɧɨɦ ɤɥɚɫɫɟ, ɦɨɠɟɬ ɢɦɟɬɶ ɞɨɫɬɭɩ
ɬɨɥɶɤɨ ɤ ɡɚɳɢɳɟɧɧɵɦ (
protected) ɢɥɢ ɨɛɳɢɦ (public) ɤɨɦɩɨɧɟɧɬɚɦ ɛɚ-
ɡɨɜɨɝɨ ɤɥɚɫɫɚ.
Ɏɭɧɤɰɢɹ, ɨɛɴɹɜɥɟɧɧɚɹ ɜɧɟ ɤɥɚɫɫɚ, ɦɨɠɟɬ ɢɦɟɬɶ ɞɨɫɬɭɩ ɬɨɥɶɤɨ ɤ ɨɛ-
ɳɢɦ (
public) ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ ɢ ɨɛɪɚɳɚɬɶɫɹ ɤ ɧɢɦ ɩɨ ɢɦɟɧɢ, ɭɬɨɱɧɟɧ-
ɧɨɦɭ ɢɦɟɧɟɦ ɨɛɴɟɤɬɚ ɢɥɢ ɭɤɚɡɚɬɟɥɹ ɧɚ ɨɛɴɟɤɬ.
ɑɬɨɛɵ ɩɨɥɭɱɢɬɶ ɞɨɫɬɭɩ ɤ ɥɢɱɧɵɦ ɤɨɦɩɨɧɟɧɬɚɦ ɨɛɴɟɤɬɨɜ ɧɟɤɨɬɨɪɨɝɨ
ɤɥɚɫɫɚ
ɏ ɜ ɮɭɧɤɰɢɢ, ɧɟ ɢɦɟɸɳɟɣ ɤ ɧɢɦ ɞɨɫɬɭɩɚ, ɷɬɚ ɮɭɧɤɰɢɹ ɞɨɥɠɧɚ ɛɵɬɶ
ɨɛɴɹɜɥɟɧɚ ɞɪɭɠɟɫɬɜɟɧɧɨɣ (
friend) ɜ ɤɥɚɫɫɟ X:
class X
{
friend void Y:: fprv( int, char*);
/* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ X */
}
Ɇɨɠɧɨ ɨɛɴɹɜɢɬɶ ɜɫɟ ɮɭɧɤɰɢɢ ɤɥɚɫɫɚ
Y ɞɪɭɠɟɫɬɜɟɧɧɵɦɢ ɜ ɤɥɚɫɫɟ X:
class Y;
class X
{
friend Y;
/* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ X */
}
class Y
{
void fy1(int, int);
int fy2(char*, int);
/* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ Y */
}
52
Dog(char *nm):Pet(nm){}; }; struct Cat:public Pet { virtual void speak() {cout<speak(); return 0; } 4.6. «Ⱦɪɭɠɟɫɬɜɟɧɧɵɟ» (friend) ɮɭɧɤɰɢɢ Ɏɭɧɤɰɢɹ, ɨɛɴɹɜɥɟɧɧɚɹ ɜ ɩɪɨɢɡɜɨɞɧɨɦ ɤɥɚɫɫɟ, ɦɨɠɟɬ ɢɦɟɬɶ ɞɨɫɬɭɩ ɬɨɥɶɤɨ ɤ ɡɚɳɢɳɟɧɧɵɦ (protected) ɢɥɢ ɨɛɳɢɦ (public) ɤɨɦɩɨɧɟɧɬɚɦ ɛɚ- ɡɨɜɨɝɨ ɤɥɚɫɫɚ. Ɏɭɧɤɰɢɹ, ɨɛɴɹɜɥɟɧɧɚɹ ɜɧɟ ɤɥɚɫɫɚ, ɦɨɠɟɬ ɢɦɟɬɶ ɞɨɫɬɭɩ ɬɨɥɶɤɨ ɤ ɨɛ- ɳɢɦ (public) ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ ɢ ɨɛɪɚɳɚɬɶɫɹ ɤ ɧɢɦ ɩɨ ɢɦɟɧɢ, ɭɬɨɱɧɟɧ- ɧɨɦɭ ɢɦɟɧɟɦ ɨɛɴɟɤɬɚ ɢɥɢ ɭɤɚɡɚɬɟɥɹ ɧɚ ɨɛɴɟɤɬ. ɑɬɨɛɵ ɩɨɥɭɱɢɬɶ ɞɨɫɬɭɩ ɤ ɥɢɱɧɵɦ ɤɨɦɩɨɧɟɧɬɚɦ ɨɛɴɟɤɬɨɜ ɧɟɤɨɬɨɪɨɝɨ ɤɥɚɫɫɚ ɏ ɜ ɮɭɧɤɰɢɢ, ɧɟ ɢɦɟɸɳɟɣ ɤ ɧɢɦ ɞɨɫɬɭɩɚ, ɷɬɚ ɮɭɧɤɰɢɹ ɞɨɥɠɧɚ ɛɵɬɶ ɨɛɴɹɜɥɟɧɚ ɞɪɭɠɟɫɬɜɟɧɧɨɣ (friend) ɜ ɤɥɚɫɫɟ X: class X { friend void Y:: fprv( int, char*); /* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ X */ } Ɇɨɠɧɨ ɨɛɴɹɜɢɬɶ ɜɫɟ ɮɭɧɤɰɢɢ ɤɥɚɫɫɚ Y ɞɪɭɠɟɫɬɜɟɧɧɵɦɢ ɜ ɤɥɚɫɫɟ X: class Y; class X { friend Y; /* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ X */ } class Y { void fy1(int, int); int fy2(char*, int); /* Ⱦɪɭɝɢɟ ɤɨɦɩɨɧɟɧɬɵ ɤɥɚɫɫɚ Y */ } 52
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »