|
cout<<”object.x после вызова дружественной функции: ”;
SetX(object,8);
Object.print();
}
Если все методы класса должны иметь доступ к скрытым полям другого класса, то весь класс объявляется дружественным с помощью ключевого слова friend.
Например, объявим класс A, дружественным к классу B:
Class B
{… friend class A;
}
Class A
{… void f1();
Void f2();
}
Класс A – друг класса В, но не наоборот. Функции f1,f2 являются дружественными к классу В и имеют доступ ко всем его полям.
#define lname 10
#include<iostream>
Using namespace std;
//Описание классов
Class Ttovar
{
private:
Static int count;
char name[lname];
Float price;
public:
Ttovar();
Ttovar(float);
~Ttovar();
void set_name(const char*);
char* get_name();
Void set_price(float);
Float get_price();
Void show();
};
Виртуальные функции и классы.
Чисто виртуальная функция – метод, удовлетворяющий следующим параметрам:
Для него не указана реализация в классе, в котором он объявлен.
Вместо реализации (тела функции) указано =0.
Метод переопределяется далее в иерархии наследования.
Вид прототипа в объявлении класса
virtual <обычный прототип функции> = 0;
В данном случае мы имеем дело с фиктивной функцией. По-существу, мы отложили реализацию метода на потом.
Пример:
class TBaseClass {
public:
virtual void Show() = 0;
};
class TDerivedClass: public TBaseClass {
private:
// некоторые данные
public:
void Show() {
// Некоторый содержательный код
}
};
Дата добавления: 2015-10-02; просмотров: 43 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Используются для получения непосредственного доступа извне к скрытым полям класса, то есть расширения интерфейса класса. | | | Перегрузка стандартных операций. |