АкушерствоАнатомияАнестезиологияВакцинопрофилактикаВалеологияВетеринарияГигиенаЗаболеванияИммунологияКардиологияНеврологияНефрологияОнкологияОториноларингологияОфтальмологияПаразитологияПедиатрияПервая помощьПсихиатрияПульмонологияРеанимацияРевматологияСтоматологияТерапияТоксикологияТравматологияУрологияФармакологияФармацевтикаФизиотерапияФтизиатрияХирургияЭндокринологияЭпидемиология

Пример 2. // функция возвращает точку − середину отрезка, концы которого заданы

Прочитайте:
  1. Альтернирующие синдромы – примеры, этиология, клиническая симптоматика.
  2. Внутривенное введение лекарственного вещества на примере эуфиллина
  3. Генная инженерия и современная биотехнология. Примеры использования в микробиологической практике.
  4. Ежегодно на земном шаре опухоли впервые выявляются примерно у 6000000 человек.
  5. Запомните примеры моногенных заболеваний, передающихся по аутосомно-доминантному, аутосомно-рецессивному и Х-сцепленному рецессивному типам.
  6. Иллюстрация игр № 1—15 примерами
  7. Клинический пример
  8. Клинический пример
  9. Клинический пример
  10. Клинический пример

// функция возвращает точку − середину отрезка, концы которого заданы

Dot & Dot:: Middle (Dot A, Dot B)

{

x =(A. x + B. x)/2.0; y =(A. y + B. y)/2.0; // вычисляет середину отрезка

Print (); // выводит на экран координаты текущей точки

this -> Print (); // все три оператора эквивалентны

(* this). Print ();

return * this; // возвращает ссылку на текущую точку

}

Как можно видеть, внутри функции-члена Middle (Dot A, Dot B) обращения к данным-членам класса и функциям-членам могут осуществляться как непосредственно по имени, так и с помощью указателя this.

На практике такое употребление указателя this встречается крайне редко. В основном указатель this используется для возврата указателя (в форме: return this;) или ссылки (в форме: return * this;) на соответствующий объект. Этот указатель находит широкое применение при перегрузке операторов.

Встраиваемые (inline) функции

В C++ можно задать функцию, которая, фактически, не вызывается, а ее тело встраивается в программу в месте ее вызова. Она действует почти так же, как макроопределение с параметрами. По сравнению с обычными функциями встраиваемые (inline) функции обладают тем преимуществом, что их вызов не связан с передачей аргументов и возвратом результатов через стек и, следовательно, они выполняются быстрее обычных. Недостатком встраиваемых функций является то, что если они слишком большие и вызываются слишком часто, объем программы сильно возрастает. Из-за этого применение встраиваемых функций обычно ограничивается только очень простыми функциями.

Объявление встраиваемой функции осуществляется с помощью спецификатора inline, который вписывается перед определением функции.

Следует иметь в виду, что спецификатор inline только формулирует требование компилятору сформировать встроенную функцию. Если компилятор не в состоянии выполнить это требование, функция компилируется как обычная.

Компилятор не может сгенерировать функцию как встраиваемую, если она:

§ содержит оператор цикла (for, while, do - while);

§ содержит оператор switch или goto;

§ содержит статическую переменную (static);

§ если функция является рекурсивной;

§ имеет возвращаемый тип, отличный от void, и не содержит оператора return;

§ содержит встроенный код ассемблера.

Компилятор может налагать и другие ограничения на использование inline -функции, которые можно уточнить в описании конкретного компилятора. Ниже приведен пример использования встраиваемой функции:

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

 


Дата добавления: 2015-09-27 | Просмотры: 327 | Нарушение авторских прав







При использовании материала ссылка на сайт medlec.org обязательна! (0.003 сек.)