Главная->Інформатика та програмування->Содержание->Другое применение операции new

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

Другое применение операции new

Вам может встретиться другой, более общий способ применения операции new для выделения памяти для объектов. Так как new возвращает указатель на блок памяти, содержащий объект, то мы имеем возможность обратиться к первона- чальному объекту путем разыменования указателя. В примере ENGLREF показано, как это можно сделать:

// englref.cpp

// разыменование указателя, возвращаемого оператором new

#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 = *( new Distance ); // создаем объект типа Distance

  dist.getdist ( );      // доступ к членам класса осуществляем через оператор "."

  dist.showdist ( );

  cout << endl;

 

  return 0;

}

 

Выражение

new Distance:

возвращает указатель на блок памяти, достаточный для размещения объекта Distance, и мы можем обратиться к первоначальному объекту, используя

*( new Distance );

На этот объект указывает указатель. Используя ссылку, мы определили dist как объект класса Distance и определили его равным *( new Distance ). Теперь мы можем ссылаться на члены объекта dist, используя операцию точки, а не опера- цию ->.

Этот подход применяется реже, чем указатели на объекты, полученные с ис- пользованием операции new, или простое объявление объекта, но он работает точно так же.

 

30