Описание тега 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…
08 апр '14 в 23:01
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)); // <-- .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<C*>(malloc(sizeof(C))); c->x = nullptr; // <-- 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 << cStr << std::endl; // this prints garbage } Я думал, что это произойдет getStr…
14 мар '16 в 06:15
4
ответа
Получить уведомление об удалении / уничтожении объекта
Мне нужен способ для отслеживания экземпляров различных классов, без каких-либо знаний о том, что они отслеживаются. По сути, у меня есть фабрика классов, которая создает экземпляры и передает их другому потоку. Как только этот поток завершает и выг…
16 июл '10 в 18:30
1
ответ
Android: щелчок по контекстному меню приводит к изменению состояния переменных
В настоящее время я пытаюсь реализовать контекстное меню для своего приложения, в нем есть список задач, и когда пользователь долго нажимает на него, должно появиться контекстное меню, предоставляющее пользователю некоторые параметры в зависимости о…
19 авг '18 в 10:58
4
ответа
Почему не неопределенное поведение уничтожать объект, который был перезаписан путем размещения нового?
Я пытаюсь выяснить, является ли следующее неопределенным поведением. Я чувствую, что это не UB, но мое чтение стандарта делает его похожим на UB: #include <iostream> struct A { A() { std::cout << "1"; } ~A() { std::cout << "2"; } }…
03 сен '18 в 16:44
6
ответов
Лучшая практика для выполнения вложенного оператора TRY / FINALLY
Привет. Каков наилучший способ делать вложенные операторы try & finally в delphi? var cds1 : TClientDataSet; cds2 : TClientDataSet; cds3 : TClientDataSet; cds4 : TClientDataSet; begin cds1 := TClientDataSet.Create(application ); try cds2 := TClientD…
29 дек '08 в 17:16
2
ответа
Является ли этот объект-расширение-срок-закрытие ошибкой компилятора C#?
Я отвечал на вопрос о возможности закрытия (законно) продления времени жизни объектов, когда столкнулся с каким-то чрезвычайно любопытным генератором кода со стороны компилятора C# (4.0, если это имеет значение). Самое короткое повторение, которое я…
07 дек '11 в 16:45
3
ответа
Это правильное использование временной std::string?
std::string getMyString() { return <make a string>; } ... 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 <memory> class Base { public: void api() { foo(); } protected: virtual void foo() { std::cout << "Base" << std::endl; } }; class FirstLevel : pu…
25 сен '18 в 10:44