06 классы 4
.pdf06 – 01
2.12.Дружественные функции и классы
•Функция-друг класса
•Класс-друг класса
Пример: Класс B – друг класса A
class A { friend class B;
...
};
06 – 02
Пример: Дружественная функция
class num {
// функция-друг класса
friend void set(num &, int); private:
int x; public:
num(){x = 0;}
void print() {cout << x << endl;} };
06 – 03
// описание дружественной функции void set(num &n, int v)
{
//прямой доступ дружественной
//функции к закрытым ДЭ класса
n.x = v;
}
06 – 04
int main()
{
num ob;
cout << ”x после создания объекта: ”;
ob.print(); set(ob, 7);
cout << ”x после вызова дружественной функции: ”;
ob.print(); return 0;
}
06 – 05
x после создания объекта: 0
x после вызова дружественной функции: 7
06 – 06
2.13. Указатель this
Пример: Свойства указателя this
class num { int x;
public:
num(int); void print();
};
06 – 07
num::num(int v) { x = v; }
void num::print()
{
cout << ”x = ” << x; cout << endl;
cout << ”this->x = ” << this->x; cout << endl;
cout << ”(*this).x = ”
<<(*this).x;
}
06 – 08
int main()
{
num ob(7); ob.print(); return 0;
}
06 – 09
x = 7 this->x = 7 (*this).x = 7
06 – 010
2.14.Динамическое выделение памяти
•операция new
•операция delete
Пример:
int main()
{
T *p, *q; // создание указателей // на тип T