Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

Вызов операторной функции operator ~() против вызова деструктора

Мы готовы к анализу контекста явного вызова деструктора. Ранее, в разделе, посвящённом деструкторам, упоминалось, что явный вызов деструктора требует операций обращения. Рассмотрим следующий пример.

На основе символа операции '~' может быть определена операторная функция. Нам сейчас абсолютно безразлично её назначение и устройство. Мы определим её лишь в самых общих чертах.

ComplexType ComplexType::operator ~ ()
{
 cout << "Это ComplexType ComplexType::operator ~ ()" << endl;
 return ComplexType();
}

Кроме того, предположим существование ещё одной функции-члена класса ComplexType, в теле которой и расположим интересующие нас выражения и операторы.

void ComplexType::xFun()
{
:::::
ComplexType CTw = ComplexType();
/*
В результате выполнения выражения преобразования типа вызывается
конструктор умолчания, который создаёт временный объект, значение
которого копируется в переменную CTw.
*/
~CTw;
 CTw.operator ~();
/*
Сокращённая и полная формы вызова операторной функции ComplexType
ComplexType::operator ~ ()
*/
~ComplexType();
/*
Создаётся временный безымянный объект, для которого вызывается
операторная функция ComplexType ComplexType::operator ~ ().
Используется сокращённая форма вызова.
*/
ComplexType().operator ~();
/*
Создаётся временный безымянный объект, для которого вызывается
операторная функция ComplexType ComplexType::operator ~ ().
Используется полная форма вызова.
*/
CTw.~ComplexType();
/*Наконец, явный вызов деструктора для объекта CTw */
this->~ComplexType();
/*
Явный вызов деструктора для объекта, расположенного по адресу *this
*/
:::::
}

[ Назад | Оглавление | Далее ]









helloworld.ru © 2001-2021
Все права защищены