(*pTom).IntroduceSelf() ;
Доступ к членам класса с использованием оператора указателя (->)
Если объект был создан в динамической памяти с использованием оператора new или если у вас есть указатель на готовый объект, то для доступа к его атрибутам и функциям можно использовать оператор указателя (pointer operator) (->):
Human* pTom = new Human();
|
|
pTom->DateOfBirth = "1970";
|
|
pTom->IntroduceSelf();
|
#
|
delete pTom;
|
Альтернативно при наличии указателя: Human Tom;
Human* pTom = &Tom; // Присвоить адрес, используя оператор ссылки & pTom->DateOfBirth = "1970"; // эквивалентно Tom.DateOfBirth = "1970";
pTom->IntroduceSelf(); // эквивалентно Tom.IntroduceSelf();
Готовая для компиляции форма класса Human с ключевыми словами p r i v a t e и p u b lic представлена в листинге 9.1.
ЛИСТИНГ 9.1. Готовый для компиляции класс Human___________________________________
#include
#include
using namespace std;
class Human
{
private:
string Name;
int Age;
9:
10: public:
Концепция классов и объектов
|
207
|
void SetName (string HumansName)
12:{
Name = HumansName;
14: }
void SetAge(int HumansAge)
l 7 : {
Age = HumansAge;
}
void IntroduceSelf()
22: {
cout « "I am " + Name « " and am ";
cout « Age « " years old" « endl;
}
};
int main()
9 : {
1*0: // Создание объекта класса Human со значением "Adam"
атрибута Name
Human FirstMan;
FirstMan.SetName("Adam");
FirstMan.SetAge(30);
// Создание объекта класса Human со значением "Eve"
атрибута Name
Human FirstWoman;
FirstWoman.SetName("Eve");
FirstWoman.SetAge (28);
3 9:
FirstMan.IntroduceSelf() ;
FirstWoman.IntroduceSelf();
}
Результат
I am Adam and am 30 years old
I am Eve and am 28 years old
Анализ
Строки 4-26 демонстрируют создание очень простого класса C++. Рассмотрим его с практической точки зрения, игнорируя термины и концепции, которые вы не понимаете с первого взгляда, поскольку подробно они обсуждаются далее на этом занятии. Сосредо точьтесь на структуре класса Human и его использовании в функции m ain ().
Этот класс содержит две закрытые ( p r iv a te ) переменные: одна типа s t r i n g по имени Name в строке 7, другая типа i n t по имени Аде в строке 8, а также несколько открытых ( p u b lic ) функций (называемых методами (method)): SetN am e (), S etA g e () и I n t r o d u c e S e lf () в строках 11, 16 и 21, которые используют закрытые переменные. Строки 31
36 в функции m ain () создают два объекта класса Human соответственно. Следующие строки устанавливают значения переменных-членов объектов F irs tM a n и F irstW om an,
208 ЗАНЯТИЕ 9. Классы и объекты
используя методы SetName () и SetA ge (), которые называют методами доступа (accessor method). Обратите внимание, как в строках 40 и 41 вызов метода I n tr o d u c e S e l f () этих двух объектов позволил создать две разные строки в выводе, использующих переменные-члены (mem ber variable), значения которых были установлены в предыдущих строках.
Вы обратили внимание на ключевые слова p r i v a t e и p u b l i c в листинге 9.1? Пришло время изучить эти средства, предоставляемые языком C++, для защиты атрибутов, кото рые ваш класс должен оставить скрытыми от тех, кто их использует.
Do'stlaringiz bilan baham: |