Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/89: Рейтинг темы: голосов - 89, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 31.03.2019
Сообщений: 144

Можно ли Конструктор и Деструктор вызывать как метод класса?

29.06.2019, 12:03. Показов 21966. Ответов 222
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно вопрос:
можно ли Конструктор и Деструктор вызывать вручную, как обычный метод класса?
Например, я хочу управлять очередностью вызовов. См. пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class FirstClass   
{
public:
    FirstClass()
    {
    }
};
 
class SecondClass : public FirstClass   
{
public:
    SecondClass()
    {
      // ...
 
      FirstClass ();  // А здесь его можно вызвать?  
    }
 };
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2019, 12:03
Ответы с готовыми решениями:

Как правильно вызывать конструктор шаблонного класса?
Как правильно вызывать конструктор класса? template <class T> class A{ T *v; int dim; public: A(T *a,int n); }; ...

Можно ли явным образом вызывать деструктор?
Например. Имеется перегруженный в классе оператор присваивания: square_matrix square_matrix::operator= (square_matrix matrix) { if...

Конструктор и деструктор анонимного класса
Здравствуйте. Есть ли в С++ такая возможность? Очень нужна именно такая реализация класса, но если это невозможно, буду думать.

222
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.07.2019, 16:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
Не думаю, что дело в эффективности распознавания понятий.
Вопрос именно в этом. На самом деле есть единственный критерий новизны. Это неизвестность адреса другим инстансам. И растет этот критерий именно из модели акторов.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
01.07.2019, 17:00
Цитата Сообщение от hoggy Посмотреть сообщение
при чем тут реализация std::string?
ты бредишь?
судя по всему ты просто не понял что я хочу тебе сказать
вот ссылка еще раз https://timsong-cpp.github.io/... sic.life#8
и там есть правила что в случае такого фокуса как здесь:
Можно ли Конструктор и Деструктор вызывать как метод класса?
от имени объекта (std::string s) можно ссылаться на новые данные нового объекта только если правила по ссылке выше соблюдаются.
если же правила не соблюдаются, то мы не имеем права от имени старого объекта обращаться к новым данным нового объекта
а реализация std::string здесь при том, что ты не знаешь что там под капотом.
соответственно ты так же не знаешь попадает ли эта реализация под правила которые по ссылке отсюда и UB.
не имея гарантий насчет реализации std::string ты не знаешь по каким правилам вообще будет функционировать твоя программа
и можно ли вообще используя переменную s считывать новые данные из памяти

Добавлено через 14 минут
Проще говоря, корректно ли использование подобного трюка сильно зависит от реализации типа, над которым этот трюк воспроизводится. А если о реализации типа ничего неизвестно, значит результат будет не определён.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
01.07.2019, 17:26
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В данном случае не может. Алгоритм кучи не позволит.
Цитата Сообщение от hoggy Посмотреть сообщение
0000008B54F42200:Petya created
0000008B54F42200:Petya destroyed
0000008B54F42160:Petya created
0000008B54F42160:Petya destroyed
0000008B54F42280:Petya created
0000008B54F42280:Petya destroyed
мне одному показалось, что адреса каждый раз разные?

Добавлено через 6 минут
Цитата Сообщение от Undisputed Посмотреть сообщение
от имени объекта (std::string s) можно ссылаться на новые данные нового объекта только если правила по ссылке выше соблюдаются.
Цитата Сообщение от Undisputed Посмотреть сообщение
соответственно ты так же не знаешь попадает ли эта реализация под правила которые по ссылке отсюда и UB.
сидят двоя наркоманов программистов в парке.
за жизнь трепяццо.
один - ёжик, другой - Undisputed.

- у нас тут UB
- чегой то?
- ну смотри, если автомобиль едет на красный свет, стало быть - шандец?
- ну шандец.

- ну и вот, а поскольку мы не знаем кто за рулем,
стало быть не знаем,
поедет ли он на красный свет...

с такой ахрененной логикой можно "логично" доказать все что угодно.

давай конкретно и по пунктам.
какие такие правила у тебя не соблюдаются.
и почему.

Добавлено через 6 минут
Цитата Сообщение от Undisputed Посмотреть сообщение
Проще говоря, корректно ли использование подобного трюка сильно зависит от реализации типа, над которым этот трюк воспроизводится.
вот откуда ты это вообще взял?
вот ещё раз свою ссылочку волшебную открой и покажи (процитируй)
потому что там ничего даже отдаленно похожего на этот бред.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
01.07.2019, 18:11
Цитата Сообщение от hoggy Посмотреть сообщение
давай конкретно и по пунктам.
Хорошо. В твоем коде есть объект типа std::string, чей lifetime истек когда произошел вызов деструктора.
Об истечении lifetime этого объекта свидетельствует пункт
The lifetime of an object o of type T ends when:
(1.3) — if T is a class type with a non-trivial destructor (10.3.7), the destructor call starts
Далее ты переиспользуешь (reuse) storage просроченного объекта через placement new, и тем самым конструируешь новый объект в этом storage.
Итого:
У тебя есть storage просроченного объекта, в котором ты конструируешь новый объект. Тем самым ты попадаешь под выделенную жирным часть ниже:
If, after the lifetime of an object has ended and before the storage which the object occupied is reused or released, a new object is created at the storage location which the original object occupied, a pointer that pointed to the original object, a reference that referred to the original object, or the name of the original object will automatically refer to the new object and[/B], once the lifetime of the new object has started, can be used to manipulate the new object, if:
Далее после выделенного жирным идет:
a pointer that pointed to the original object, a reference that referred to the original object, or the name of the original object will automatically refer to the new object and, once the lifetime of the new object has started, can be used to manipulate the new object, if:
то есть все указатели, ссылки и просто имя объекта (которое ты используешь для доступа к новым данным) теперь ссылается на новый объект (новые данные, размещенные при использовании placement new), но только при определенных условиях (if я выделил жирным, после него и идут те самые условия).
Вот эти условия:
(8.1) the storage for the new object exactly overlays the storage location which the original object occupied, and
(8.2) the new object is of the same type as the original object (ignoring the top-level cv-qualifiers), and
(8.3) the type of the original object is not const-qualified, and, if a class type, does not contain any non-static data member whose type is const-qualified or a reference type, and
(8.4)the original object was a most derived object of type T and the new object is a most derived object of type T (that is, they are not base class subobjects).
То есть, ссылаться на новые данные используя прежнее имя ты можешь только если попадаешь под эти пункты.
А эти пункты как видно завязаны на реализацию объекта, в данном случае это std::string.
Не имея гарантий относительно внутреннего устройства std::string, ты не имеешь гарантий того что попадаешь под эти пункты.
Соответственно, каким будет результат этого кода:
Можно ли Конструктор и Деструктор вызывать как метод класса?
лучше даже и не гадать

ну вот и прошлись по пунктам
с чем конкретно ты не согласен?
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.07.2019, 19:23
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вопрос именно в этом.
Я уже готов это поверить. Но как же с вами говорить тогда?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На самом деле есть единственный критерий новизны. Это неизвестность
И не очевидность. А вот другие инстансы при чём? Любой объект имеет адрес. Если он открыт и является lvalue то код может взять этот адрес.
Опять фантазия. Fulcrum_013, я стеснялся сначала сказать, что привык считать инстансом то что все в С++ считают инстансом - конкретный класс из шаблонна классов. Теперь придётся и это сказать.
С моей точки зрения, в данную тему вы привнесли опасение, что после вызова деструктора на объекте выделенном new явно (не размещением) автомат стека какого-то (идиотского) компилятора, может освободить физическое адресное пространство, которое занимал усопший. Я такого ни где и ни когда не видел. Всякий раз попытка вызвать деструктор принудительно и без повторной инициализации наказывалась крэшем при выходе из области, что свидетельствовало о том, что ни один из известных мне компиляторов не отслеживал явного вызова деструктора и тупо запускал его в автоматическом режиме. Это правильно. Он не делает лишних телодвижений и выдаёт максимальную скорость.
Но и на стеке легко получить код который не может вызвать освобождения памяти с запуском деструктора. Для этого достаточно объявить автоматический массив типа:
C++
1
char buf[sizeof(Phoenix)];
и далее так же как и с указателем на память в куче.
Вопрос остался вами не затронутым. А вот пространство форума выделяется тоже по странично. Посмотрите сколько пустых страниц мы с вами истратили. Но вас нельзя остановить. Это кстати хорошо ложится в предложенную вами парадигму:
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
дело в эффективности распознавания понятий
Я уже готов признать, что дело именно в этом.

Добавлено через 29 минут
Цитата Сообщение от Undisputed Посмотреть сообщение
с чем конкретно ты не согласен?
Undisputed, считать ли объект старым или новым - вопрос чисто конфессионный. Это как раз и подтверждает ваша цитата. Что касается ограничений на доступ, то они неразумны. Совсем. Я думаю, что получить не консистентный объект используя конструктор можно лишь, если конструктор писал тот, кто сочинял такой текст.
А вот что касается попыток получить тот же объект по данным, это уже другой вопрос. Объект который мы пытаемся склонировать вполне мог запустить ракету, логировать пуск и потерять доступ к файлу. Или много чего ещё. Остальные данные, которые можно довести до ума после конструирования... можно довести до ума.
О чём тогда спорим? Называть ли его новым или старым.
Пусть те кому нравятся старые ссылки на новые объекты считают его новым. А те кто это не воспринимает будут делать вид (не спорить же со стандартом), но внутренне надеяться, что что-то в мире пойдёт к лучшему.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
01.07.2019, 19:53
IGPIGP,
А при чем тут конфессии? есть язык и есть правила этого языка, вот и все
Иначе был бы бардак... Вот от этих правил и предлагаю отталкиваться а не от своих что бы все были на одной волне.
Таким образом думаю можно приблизиться к тому, что все будут говорить на одном и понятном друг другу языке
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.07.2019, 20:54
Undisputed, если бы вопрос был в формальных правилах то писать и читать такую тему было бы мягко говоря глупо. Очень мягко говоря.
Поэтому то, что вы говорите не соответствует вопросу. Поверьте, ни кто не собирается спорить со стандартом. Даже с плохим. Потому что плохой мир порядок лучше хорошего войны хаоса.
Но вопросы в том
-как относиться к конструированию/деструктурированию,
-что называть объектом.
-каково должно быть определение в стандарте базового понятия,
вылились в обсуждение вопроса о том, является ли реинициализированный объект тем объектом, что был деинициализирован до него, с точки зрения программы. Мне совершенно ясно, что технически так оно и есть. Но было много интересных доводов в пользу того, что
-с каждым новым тактом процессора мир, компьютер и объект в нём становятся новыми;
-с точки зрения ООП объект это то что ни как нельзя возродить (плюсовая реализация RAII вошла в клинч с общими парадигмами объектного подхода к анализу внешнего мира).
-истина в стандарте, и стандарт всегда прав.
Тема удалась, я думаю.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.07.2019, 21:01
Цитата Сообщение от IGPIGP Посмотреть сообщение
А вот другие инстансы при чём?
А вот при том что если адрес новый никто не может к нему обратится пока ему не дашь этот адрес. ну а соответсвенно и по старой ссылке другого типа. Т.е. инстанс для окружающих абсолютно новый.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.07.2019, 21:15
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А вот при том что если адрес новый никто не может к нему обратится пока ему не дашь этот адрес. ну а соответсвенно и по старой ссылке другого типа. Т.е. инстанс для окружающих абсолютно новый.
Инстанс как таковой не применяется к объектам. Это результат инстанциирования шаблона
Что такое инстанцирование?
Что касается адреса объекта то именно он не изменяется в нашем обсуждении. Посмотрите цитату черновика приведенную Undisputed. Там видно что чья-то левая нога захотела назвать объект новым, но при этом (при соблюдении ряда очевидных условий) к нему можно обращаться как к "старому", используя имя, ссылки и пр. Это кстати полностью нивелирует страшные фантазии о том, что стек или компилятор инвалидизируют объект в момент запуска деструктора включая адрес... Не знаю, что ещё сказать. Если бы эта нога захотела оставить за объектом и совершенно опустевшее (после переноса ссылок) то есть, формальное право считаться старым объектом (реинициализированным, конечно), то ни чего бы не изменилось, кроме более консистентной логики. Но это дело вкуса (я писал на 2 или 3 странице ещё ) и тот разговор который мы провели показал хороший срез мира C++. Это тоже полезно для новичков, я думаю.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.07.2019, 21:26
Цитата Сообщение от IGPIGP Посмотреть сообщение
Инстанс как таковой не применяется к объектам
Инстанс это экземпляр класса. Т.е. объект в терминах ООП. А не то что называют объектом в описаннии языка. Под них и char и т.д. подпадает.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.07.2019, 22:16
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Инстанс это экземпляр класса. Т.е. объект в терминах ООП. А не то что называют объектом в описаннии языка.
В английском языке ещё есть множество контекстов, где слово инстанс имеет значение. Я рад, что вы знаете его значение в одной из версий ООП схем. Ну почти. Однако ваше стремление это пропагандировать путём внедрения в данную тему уже не радует. Ведь сути обсуждения вы не поняли и не хотите. Смотрите: стандарт говорит о том что объекты (объекты Карл) могут считаться новыми а ссылки и имя использовать старое. Это классическое разрушение абстракции. Баба с бородой, в шапке ушанке, и с автоматом Калашникова, это уже дед. И это ни как не зависит от нашего желания называть его бабой. А желание странное и деструктивное.
Ссылка это псевдоним объекта (объекта Карл). Это неофициальное определение, но лучше такое чем никакого. Это потому, что ссылка в момент инициализации связывается с объектом и это коренная фича языка (не удачная на мой взгляд, но у неё есть и хорошие стороны). Ссылка менее наивна чем указатель? Нет. Указатель прагматичен и его можно проверить на nullptr. Он требует больше дисциплины, но более гибок. Ссылка привязана к объекту и является его псевдонимом. Она надеется что объект валиден и как мы видели в теме - наивна. Но привязана она к адресу и типу. Этого достаточно чтобы быть псевдонимом объекта. Уникального объекта. Видите, как производное понятие (ссылка) строится на базовом (объект). И когда кому-то взбрендило внести противоречие в понятие объект, сразу разрушилось определение ссылки. Она стала псевдонимом разных объектов. Теперь если добавить инстансы, имиджи, и пр. нечисть, станет веселее. У объектов появятся запахи (они уже есть, кстати) оттенки, характер и пр.
Вопрос лишь в том, как к этому относиться, а предмета для серьёзного спора тут не видно.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
02.07.2019, 16:12
Цитата Сообщение от IGPIGP Посмотреть сообщение
Инстанс как таковой не применяется к объектам.
Ну вообще дословно инстанс переводится как экземпляр. К инстанциированным шаблонам это тоже лепится. Так что лучше все таки экземпляр класса уточнять. а то да запутаться можно на раз.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.07.2019, 16:29
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
К инстанциированным шаблонам это тоже лепится.
Круто.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну вообще дословно инстанс переводится как экземпляр.
Ваше желание помочь переводчикам выше всяких похвал. Но Страуструп и комитетчики пишут на английском. Они пишут что то о чём мы тут говорили это объекты. У них право давать названия.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Так что лучше все таки экземпляр класса уточнять.
Экземпляр это конкретный объект. Могут быть удивительные экземпляры насекомых, объектов классов, участников форума. Тут важна, именно, индивидуальность (у каждого свой this). Ну же, Fulcrum_013, вам это должно быть особенно хорошо понятно. Инстанс - конкретное воплощение - порождённый экземпляр. Если рассматривать деятельность некоторых участников, то порождая новые посты, они продолжают своё существование. В этом смысле они инстансоплоды. Правда к теме оно относится не более чем от начала попытки внедрения инстанса в данную тему.
Инстансуализм не пройдет, Fulcrum_013. Сторонники традиционной терминологии дадут достойную отповедь.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
02.07.2019, 16:38
IGPIGP, точно так же экземпляр класса. т.е. конкретный кусок памяти где создана структура данных описываемая классом. Или экземплят шаблона. Конкретный кусок кода сгенерированный для конкретного набора аргументов шаблона.

Добавлено через 4 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но Страуструп и комитетчики пишут на английском.
Они пишут о том как работают системы языка и только. Но не о том как при помощи этих систем реализовывать те или иные матмодели. т.е. то что они называют объектом не соответствует или как минимум не совсем соответствует (скорее всего включает в себя) то что называют объектом в ООП - экземпляр класса. Здесь же речь идет о пересаживании именно экземпляров классов в тот же буфер. Так что выходит далеко за описание самого языка. Т.е. просто разный уровень абстракций.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.07.2019, 16:41
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
IGPIGP, точно так же экземпляр класса. т.е. конкретный кусок памяти где создана структура данных описываемая классом. Или экземплят шаблона. Конкретный кусок кода сгенерированный для конкретного набора аргументов шаблона.
Почти не угадали. Инстанс шаблона функции это не объект. В плюсах функции - не объекты. Поэтому аналогия тут не пройдёт. А для классов-инстансов шаблонов, инстанс, это конкретное определение. То есть, это определение типа, а не объекта. А вот объекты порождаются уже при конструировании объектов данного типа-инстанса.
Но и это мало вяжется в тему. Хотя к тому что уже на инстанцировано, трудно добавить что-то лишнее. И так полно лишнего.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
02.07.2019, 16:49
Цитата Сообщение от IGPIGP Посмотреть сообщение
Инстанс шаблона функции это не объект.
Это кусок кода созданной для функции с конкретным набором аргументов. т.е. точно так же экземпляр.

Добавлено через 4 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
А вот объекты порождаются уже при конструировании объектов данного типа-инстанса.
И получаются инстансы классов.
Т.е. еще раз - инстанс переводитс как экземпляр. Соответсвенно экземпляр функции, экземпляр типа, экземпляр класса. Все просто. Как раз слово после экземпляр задает контекст в котором это слово экземпляр понимать. Пока дело крутится в одном контексте - к примеру ООП для краткости слово "класса" после слова "экземпляр" опускают. Но как только разговор идет о нескольких контекстах то надо уточнять.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.07.2019, 16:49
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Они пишут о том как работают системы языка и только.
Вот оно что! Осенило... Fulcrum_013, мы же тут тоже о том же пытались говорить. Пока вы не пришли. Хотя конечно и с точки зрения С++ модели ООП классы это предмет. Но другой темы. вернее тысяч других и интереснейших тем. Например, "Пересоздание синглтона" или "Тупой миф рукожо криворуких философов о синглтоне как антипаттерне" и многие другие.
Но помилуйте Fulcrum_013, при чем тут разговор о реинкарнации объекта и формальном в общем-то утверждении из стандарта: "Объект умер! Даздравствует объект!". Мы тут не касались просторов вселенной и вели себя смирно. имхо. А вы пришли и всех раскидали. Своим инстансом. Прекратите им размахивать.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
02.07.2019, 16:50
IGPIGP, А сточки зрения того как работают системы языка рассматривать новизну/неновезну экземпляра класса - бессмыслица. Потому что живут они в рамках математической модели которая в описание языка не входит.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.07.2019, 17:15
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
GPIGP, А сточки зрения того как работают системы языка рассматривать новизну/неновезну экземпляра класса - бессмыслица.
Не ужели? Я открою вам секрет. В нижнем мире, где не ходят паттерны в белых, просторных параметрах, у объектов определённого типа, есть единственная мера идентичности - адрес. Когда кто-то сравнивает значения он конечно знает что делает, но бывает момент Х. Это когда имеет значение лишь полная тождественность. Проверка на самоприсваивание в ассигнмент-операторе спасла не одну зад задорную физиономию. Вопрос "Кто я?" из к/ф "Анализируй то" явно указывает на необходимость анализировать. Он актуален не только для объектов, но важен и для субъектов. Бессмыслица Fulcrum_013, это перманентное состояние у некоторых. Лечится трудно, но при желании, - вполне успешно.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
02.07.2019, 17:25
Цитата Сообщение от IGPIGP Посмотреть сообщение
В нижнем мире, где не ходят паттерны в белых, просторных параметрах, у объектов определённого типа, есть единственная мера идентичности - адрес.
Нету у них такой меры. Я вам это показывал на примере new который возвращает адрес старого объекта для нового. При этом между вызовами delete для старого и new который вернет ээтот старый адрес для нового может пройти сколько угодно много алгоритмического времени.

Добавлено через 5 минут
При этом есть и второй момент где адрес просто меняется а объекты остаются те же. Например реаллокация вектора. Его элементы которые оказались после этого по другим адресам - это новые объекты или старые? По логике вещей старые. А по вашей мере получается новые.

Добавлено через 4 минуты
точно так же после
C++
1
2
vector.pop_back();
vector.emplace_back(foo, bar, baz);
по вашей мере в последнем элементе вектора будет старый объект а не новый. И таких примеров негодности этой меры мульйон.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.07.2019, 17:25

Зачем нужны конструктор и деструктор класса?
вот задание: Пользовательский класс Х должен содержать необходимые элементы-данные, которые создаются в динамической области памяти....

Дописать конструктор и деструктор для класса
Помогите пожалуйста написать конструктор копии и деструктор, а также вызвать их, чтобы деструктор выводил на экран "работает" ...

Для класса задать конструктор и деструктор
Ребята,нужна помощь в написании программы. Для класса задать конструктор(для выделения памяти,открытия файлов,задания начальных значений...

Конструктор (деструктор) у класса, не имеющего тип
Можно ли объявить и определить конструктор у класса, который не имеет тип? То есть у меня в программе всего 1 экземпляр этого класса,...

Создание класса с перегрузкой операторов конструктор и деструктор
Создать класс времени (Time) содержащий закрытую переменную-член хранящую целое значение времени интервала в секундах. Интерфейс класса...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
160
Ответ Создать тему
Новые блоги и статьи
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru