Описание тега object-lifetime

The object lifetime (or life cycle) of an object in object-oriented programming is the time between an object is created (also known as instantiation or construction) till the object is no longer used and then destructed or freed.
3 ответа

Задание значений по умолчанию для ссылок на переменные-члены

Поэтому я создал класс в C++, который имеет 2 члена ссылочного типа: class Edge{ private: const Node& base; const Node& target; public: Edge(const Node& new1, const Node& new2); Я хочу дать значения по умолчанию для базы и цели в C't…
30 апр '12 в 17:16
1 ответ

Время жизни переменной в статическом списке

Этот код добавляет новый объект в статический список внутри функции. список передается по ссылке на функцию. что за время жизни нового объекта в списке? Пример кода: #include <list> #include <string> #include <iostream> using names…
2 ответа

Передача указателя "this" другому классу / функции в деструкторе

Является ли законным C++ для создания рабочего объекта в стеке в деструкторе некоторого главного объекта и передачи this указатель мастер-объекта на вспомогательный объект? Затем вспомогательный объект будет также вызывать функции-члены главного объ…
21 окт '17 в 07:55
4 ответа

Должна ли эта временная привязка C++ к ссылочному члену быть незаконной?

Мой вопрос (который последует после этого, извините за длинное вступление, вопрос выделен жирным шрифтом) первоначально был вдохновлен пунктом 23 в " Исключительном С ++", посвященном Herb Sutters, где мы находим нечто подобное: <Вырезано> ... int m…
25 сен '09 в 12:30
4 ответа

Почему переменная, объявленная в операторе using, считается только для чтения?

Зачем using переменная рассматривается как только для чтения? Это спецификация языка C# или спецификация управляемых языков? Это потому, что C# - это язык.net? Заранее спасибо. Примечание: использование переменной - это переменная, которая появляетс…
14 май '11 в 10:41
2 ответа

Верна ли ссылка из временной переменной?

Я сталкивался с ситуацией, когда возможность цепочки вызова метода для временной переменной была бы действительно полезна: draw(Quad(0, 0, 1, 1).rotate(90)); // &lt;-- .rotate() returns a Quad reference struct Quad{ Quad(float x, float y, float widt…
18 фев '15 в 11:27
4 ответа

Почему я могу повторно инициализировать константу внутри цикла?

Компилятор не выдает никаких предупреждений или ошибок для следующего кода. Является ли значение const-определителя оскорбительным? Очевидно, что я не могу переназначить его позже в той же итерации цикла, но он, похоже, переназначает его после каждо…
27 июл '17 в 17:38
3 ответа

Состояние объекта между вызовом ~Derived() и ~Base()

Вопрос Что стандарт C++ гарантирует о состоянии объекта во время после выполнения деструктора производного класса, но до выполнения деструктора базового класса? (Это время, когда вызывается деструктор подобъектов производного класса.) пример #includ…
27 июн '12 в 21:56
5 ответов

Переменная жизнь

Что происходит с переменной, когда строка выполнения выходит за пределы блока кода? Например: 1 public void myMethod() 2 { 3 int number; 4 number = 5; 5 } Итак, мы объявляем и устанавливаем переменную. Когда он выходит за пределы блока кода (строка …
30 июн '15 в 11:38
3 ответа

Какой смысл во временной привязке к выражению времени жизни члена в C++ Standard?

В этом вопросе пользователь Happy Mittal цитирует раздел 12.2.5 стандарта C++03: временная привязка к элементу ссылки в ctor-initializer конструктора (12.6.2) сохраняется до выхода из конструктора . Как это может быть полезно в любом случае? Я имею …
18 янв '11 в 08:20
6 ответов

Законно ли обходить конструктор класса или это приводит к неопределенному поведению?

Рассмотрим следующий пример кода: class C { public: int* x; }; void f() { C* c = static_cast&lt;C*&gt;(malloc(sizeof(C))); c-&gt;x = nullptr; // &lt;-- here } Если бы мне пришлось жить с неинициализированной памятью по какой-либо причине (конечно, е…
05 июн '16 в 17:49
3 ответа

Почему вызов std::string.c_str() для функции, которая возвращает строку, не работает?

У меня есть следующий код: std::string getString() { std::string str("hello"); return str; } int main() { const char* cStr = getString().c_str(); std::cout &lt;&lt; cStr &lt;&lt; std::endl; // this prints garbage } Я думал, что это произойдет getStr…
14 мар '16 в 06:15
4 ответа

Получить уведомление об удалении / уничтожении объекта

Мне нужен способ для отслеживания экземпляров различных классов, без каких-либо знаний о том, что они отслеживаются. По сути, у меня есть фабрика классов, которая создает экземпляры и передает их другому потоку. Как только этот поток завершает и выг…
16 июл '10 в 18:30
1 ответ

Android: щелчок по контекстному меню приводит к изменению состояния переменных

В настоящее время я пытаюсь реализовать контекстное меню для своего приложения, в нем есть список задач, и когда пользователь долго нажимает на него, должно появиться контекстное меню, предоставляющее пользователю некоторые параметры в зависимости о…
4 ответа

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

Я пытаюсь выяснить, является ли следующее неопределенным поведением. Я чувствую, что это не UB, но мое чтение стандарта делает его похожим на UB: #include &lt;iostream&gt; struct A { A() { std::cout &lt;&lt; "1"; } ~A() { std::cout &lt;&lt; "2"; } }…
6 ответов

Лучшая практика для выполнения вложенного оператора TRY / FINALLY

Привет. Каков наилучший способ делать вложенные операторы try & finally в delphi? var cds1 : TClientDataSet; cds2 : TClientDataSet; cds3 : TClientDataSet; cds4 : TClientDataSet; begin cds1 := TClientDataSet.Create(application ); try cds2 := TClientD…
2 ответа

Является ли этот объект-расширение-срок-закрытие ошибкой компилятора C#?

Я отвечал на вопрос о возможности закрытия (законно) продления времени жизни объектов, когда столкнулся с каким-то чрезвычайно любопытным генератором кода со стороны компилятора C# (4.0, если это имеет значение). Самое короткое повторение, которое я…
07 дек '11 в 16:45
3 ответа

Это правильное использование временной std::string?

std::string getMyString() { return &lt;make a string&gt;; } ... HANDLE something = OpenSomething(getMyString().c_str(), ...); Я прочитал " Гарантированное время жизни временного" в C++ и считаю, что временная строка будет жить до тех пор, пока не бу…
27 мар '11 в 13:00
2 ответа

Почему этот экземпляр, инициированный Unity, не является единственным?

В моем приложении asp.net-mvc у меня есть statis MvcApplication, который вызывает статический метод CreateContainer(). В этом методе я создаю контейнер Unity ioc: private static IUnityContainer CreateContainer() { var container = new UnityContainer(…
17 дек '09 в 15:39
3 ответа

Неожиданная отправка виртуальной функции при использовании ссылки на базовый класс вместо указателя

Допустим, у меня есть простая иерархия классов следующим образом с общим API: #include &lt;memory&gt; class Base { public: void api() { foo(); } protected: virtual void foo() { std::cout &lt;&lt; "Base" &lt;&lt; std::endl; } }; class FirstLevel : pu…