R.18.3.3 Присваивание указателю this
R.18.3.3 Присваивание указателю this
Присваивая определенные значения указателю this, пользователь мог управлять выделением памяти для объекта некоторого класса. В конструкторе до использования членов класса можно было с помощью такого присваивания реализовать свой алгоритм выделения памяти. Присваивая в деструкторе указателю this нуль, можно было обойти стандартную операцию освобождения объектов класса. Кроме того, присваивание нуля в деструкторе отменяло неявные вызовы деструкторов для членов и базовых классов, например:
class Z {
int z[10];
Z() { this = my_allocator(sizeof(Z)); }
~Z() { my_deallocator(this); this = 0; }
};
Если выделение памяти уже произошло (как бывает для членов и объектов auto или static), то при входе в конструктор this имеет ненулевое значение и значение нуль в противном случае.
Вызовы конструкторов для членов и базовых классов произойдут только после того, как this получил значение. Если в конструкторе базового класса есть присваивание this, то новое значение this будет использоваться и в конструкторах производных классов, если они есть.
Отметим, что при наличии указанного анахронизма или тип указателя this не может быть *const, или нужно делать исключение для this из правила о присваивании указателям со спецификацией const.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
11.7.4 Присваивание IP-адресов
11.7.4 Присваивание IP-адресов Администратор конфигурирует сервер BOOTP для присваивания системам IP-адресов посредством ручного создания таблицы отображения на IP-адрес комбинации типа оборудования и аппаратного адреса клиента. Кодирование типов оборудования определяется
11.9.1 Присваивание IP-адресов
11.9.1 Присваивание IP-адресов В DHCP поддерживаются три типа присвоения адресов:? Ручное, когда IP-адрес вводится на сервере и назначается клиенту постоянно? Автоматическое, когда IP-адрес выбирается сервером из пула доступных адресов и назначается клиенту
Присваивание значений
Присваивание значений Значения переменным присваиваются с помощью обыкновенного знака равенства. Например, чтобы поместить число 3 в переменную с именем intC, напечатайте intC = 3В VBA оператор присваивания представляет собой связанную знаком равенства конструкцию, с
25. Передача параметров по значению, (интеллектуальному) указателю или ссылке
25. Передача параметров по значению, (интеллектуальному) указателю или ссылке РезюмеВы должны четко уяснить разницу между входными, выходными параметрами и параметрами, предназначенными и для ввода, и для вывода информации, а также между передачей параметров по значению
Простое присваивание
Простое присваивание Операция простого присваивания обозначается знаком =. Значение правого операнда присваивается левому операнду. Левый операнд должен быть модифицируемым L-выражением. При присваивании выполняются правила преобразования типов, описанные в разделе
Составное присваивание
Составное присваивание Операция составного присваивания состоит из простой операции присваивания, скомбинированной с какой-либо другой бинарной операцией. При составном присваивании вначале выполняется действие, специфицированное бинарной операцией, а затем
6.6.2. Присваивание и обмен
6.6.2. Присваивание и обмен Что происходит, если мы присваиваем один контейнер другому? Оператор присваивания копирует элементы из контейнера, стоящего справа, в контейнер, стоящий слева от знака равенства. А если эти контейнеры имеют разный размер? Например:// svecl
7.9.2. Инициализация и присваивание
7.9.2. Инициализация и присваивание Вспомним, что имя массива без указания индекса элемента интерпретируется как адрес первого элемента. Аналогично имя функции без следующих за ним скобок интерпретируется как указатель на функцию. Например, при вычислении
14.7. Почленное присваивание A
14.7. Почленное присваивание A Присваивание одному объекту класса значения другого объекта того же класса реализуется почленным присваиванием по умолчанию. От почленной инициализации по умолчанию оно отличается только использованием копирующего оператора присваивания
17.6. Почленная инициализация и присваивание A
17.6. Почленная инициализация и присваивание A При проектировании класса мы должны позаботиться о том, чтобы почленная инициализация (см. раздел 14.6) и почленное присваивание (см. раздел 14.7) были реализованы правильно и эффективно. Рассмотрим связь этих операций с
4.2. Присваивание значений переменным
4.2. Присваивание значений переменным =оператор присваивания (пробельные символы до и после оператора -- недопустимы) Не путайте с операторами сравнения = и -eq!Обратите внимание: символ = может использоваться как в качестве оператора присваивания, так и в качестве
6.6 Присваивание и Инициализация
6.6 Присваивание и Инициализация Рассмотрим очень простой класс строк string:struct string (* char* p; int size; // размер вектора, на который указывает pstring(int sz) (* p = new char[size=sz]; *) ~string() (* delete p; *) *);Строка – это структура данных, состоящая из вектора сиволов и длины этого вектора. Вектор
Присваивание функции результата
Присваивание функции результата Присваивание функции результата является интересной языковой проблемой, обсуждение которой было начато ранее в данной лекции. Стоит изучить ее подробнее ввиду ее важности и для языков, не использующих ОО-подход.Рассмотрим функцию -
Присваивание (Assignment)
Присваивание (Assignment) Инструкция присваивания записывается в виде:x := eгде x - сущность, допускающая запись (writable), а e - выражение совместимого типа. Такая сущность может быть:[x]. неконстантным атрибутом включающего класса;[x]. локальной сущностью включающей подпрограммы. Для