ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 10) онлайн

Указатели на объекты

Указатели могут указывать на объекты так же, как и на простые типы данных и массивы. Мы рассмотрели много примеров объявления таких объектов, как:

Distance dist;

где определен объект dist класса Distance.

Однако в некоторых случаях на момент написания программы нам неизвестно количество объектов, которое необходимо создать. Тогда мы можем использовать операцию new для создания объектов во время работы программы. Как мы виде- ли, операция new возвращает указатель на неименованный объект. Рассмотрим два подхода к созданию объектов на примере небольшой программы ENGLPTR.

// englptr.cpp

// доступ к членам класса через указатель

#include <iostream>

using namespace std;

///////////////////////////////////////////////////////////

class Distance

{

  private:

    int feet;

    float inches;

public:

    void getdist ( ) // получение информации

      {

        cout << "\nВведите футы: "; cin >> feet;

        cout << "Введите дюймы: "; cin >> inches;

      }

    void showdist ( ) // вывод информации

      { cout << feet << "\'-" << inches << '\"'; }

};

///////////////////////////////////////////////////////////

int  main ( )

{

  Distance dist;     // определяем объект типа Distance

  dist.getdist ( );  // получаем информацию

  dist.showdist ( ); // выводим на экран

 

  Distance* distptr;      // определяем переменную-указатель на Distance

  distptr = new Distance; // создаем объект Distance

  distptr->getdist ( );   // получаем для него информацию

  distptr->showdist ( );  // выводим информацию

  cout << endl;

 

  return 0;

}

 

В этой программе использована английская вариация класса Distance, рассмот- ренная в предыдущей главе. В функции main() определен dist, использующий сначала функцию getdist() класса Distance для получения интервала от пользова- теля, а затем функцию showdist() для вывода на дисплей этого интервала.

 

28