Описание тега temporary-objects
Временные объекты C++ - это безымянные объекты, созданные в стеке компилятором. Они используются во время инициализации ссылки и во время оценки выражений, включая стандартные преобразования типов, передачу аргументов, возврат функций и оценку выражения throw.
2
ответа
Компилятор выполняет оптимизацию возвращаемого значения в случае возврата переменной-члена?
Учитывая следующий код class foo { private: boost::shared_ptr <std::deque<foo> > m_ptr; public: foo(); boost::shared_ptr <std::deque<foo> > get_my_ptr() { return m_ptr; } }; И когда мы позвоним get_my_ptr() функционировать та…
10 фев '16 в 06:54
2
ответа
Не удалось связать многокомпонентный идентификатор "поле"
Я пытаюсь использовать данные, хранящиеся во временном наборе результатов (SOURCE в коде), чтобы заполнить другую таблицу с SQL Server 2012. При выполнении приведенного ниже кода я получаю сообщение об ошибке "Не удалось определить идентификатор из …
30 окт '13 в 09:54
3
ответа
Временный объект не уничтожен правильно?
Смотрите этот код здесь: class test { int n; int *j; public: test(int m) { n = 12; j = new int; cin >> *j; } void show() { cout << n << ' ' << *j << endl; } ~test() { delete j; } }; int main() { test var = 123; var.show…
25 янв '12 в 08:05
1
ответ
Обнаружить (бессмысленное) назначение временному объекту
Есть ли какая-либо опция компилятора, которая позволяет получить предупреждение при попытке назначить временный объект? Пример: struct S { S op() { return S(); } }; int main() { S s; s.op() = s; // assign to temporary. Wants to warn here. } Я знаю, …
16 окт '15 в 10:08
2
ответа
Является ли временный объект изначально постоянным?
Это код UB? struct A { void nonconst() {} }; const A& a = A{}; const_cast<A&>(a).nonconst(); Другими словами, является (временным) объектом изначально const? Я просмотрел стандарт, но не могу найти ответ, поэтому буду признателен за ци…
23 янв '19 в 20:06
0
ответов
Область видимости C++11 и время жизни временной привязки к (const) ссылке (GCC)
У меня есть следующие вопросы, связанные с той же ситуацией (не в целом): Почему компилятор не выдает предупреждение, когда временный объект связан со ссылкой? Как продлевает жизнь временную работу (когда она привязана к ссылке)? Как интерпретироват…
30 янв '17 в 03:28
2
ответа
Константная ссылка на временный объект перестает работать после области действия функции (время жизни)
Задавая этот вопрос, я узнал, что постоянная ссылка на временный объект действительна в C++: int main () { int a = 21; int b = 21; //error: invalid initialization of non-const reference //int & sum = a + b;e [...] //OK int const & sum = a + …
21 июн '13 в 11:28
0
ответов
Есть ли способ добиться продления срока службы путем связывания ссылок, кроме встроенной декларации?
Я знаю, что могу использовать "привязку ссылки на расширение продолжительности жизни", чтобы сохранить временную локальную область действия const auto& temp = "lorem ipsum"s но мне было любопытно, если бы был способ заставить продолжительность в…
06 июн '16 в 11:57
3
ответа
Должен ли временный T в качестве параметра вызывать T(const T&) или T(T&&) в C++11?
Итак, код сначала: #include <iostream> #include <utility> struct X{ int i; void transform(){} X() :i(0){std::cout<<"default\n";} X(const X& src): i(src.i){std::cout<<"copy\n";} X(X&& msrc) :i(msrc.i){msrc.i=0;std:…
11 июн '14 в 20:41
1
ответ
Передача указателя на временный объект
Мы знаем, что можем передавать временные объекты в функции по константной ссылке, например так: class A { public: A(int _b = 0) { b = _b; } int b; }; void foo(A& a) {printf("%d", a.b);} void cfoo(const A& a) {printf("%d", a.b);} int main(voi…
18 сен '14 в 08:33
2
ответа
Использование string::c_str во временной строке
Относительно того, когда временные объекты уничтожаются, действительно ли это: FILE *f = fopen (std::string ("my_path").c_str (), "r"); Будет ли временное уничтожено сразу после оценки первого аргумента fopen или после fopen вызов. Тестирование с ис…
03 мар '14 в 12:21
1
ответ
Передача временных объектов по ссылке
У меня есть два класса: круг и точка Класс Circle содержит Dot, а Dot содержит int. Circle имеет функцию getDot(), а Dot имеет функцию lessThan(Dot&). Я хочу отсортировать массив Circles, elems[], по значениям int внутри Dot. Если у меня есть Circle…
27 сен '18 в 03:14
1
ответ
MySQL создает временную таблицу с автоинкрементом только из SELECT
С MySQL я знаю, что можно создать временную таблицу из SELECT: создать временную таблицу в операторе SELECT без отдельной CREATE TABLE Я также знаю, что можно создать автоинкремент во временной таблице: автоинкремент во временной таблице Я хочу сдел…
06 ноя '14 в 20:05
1
ответ
Как сохранить временные значения / объекты для сеанса в приложении iOS
Итак, у меня есть гибридное приложение для электронной коммерции для iOS, над которым я работаю, и мне нужно временно хранить несколько значений строк / массивов в течение всего процесса оформления заказа. Если пользователь покидает процесс оформлен…
19 июн '14 в 07:56
2
ответа
Конструктор объекта C++ с временным объектом в качестве аргумента
Я написал некоторый код, и мне вдруг пришло в голову, что то, что я делаю, может быть действительно плохой идеей. Вот своего рода абстрактный пример. Ключевым моментом является передача по ссылке вектора. // vector.hpp class vector { vector(double x…
26 авг '13 в 22:49
1
ответ
Принудительная очистка временных переменных
(Пожалуйста, извините, если этот вопрос является дубликатом, я новичок и понятия не имел, какие термины искать, чтобы найти ответ!) Я пытаюсь написать библиотеку линейной алгебры с некоторым очень элементарным управлением памятью для C++ - по сути, …
10 мар '18 в 16:32
3
ответа
Оптимизация Java: объявление переменных класса VS с использованием временных переменных
Прежде всего, извините, если мой английский не идеален, но я не из англоязычной страны (Испания), так что... Ну вот и вопрос. Creating При создании класса рекомендуется использовать все возможные временные переменные, или лучше объявить свои перемен…
30 мар '14 в 01:40
1
ответ
Могу ли я получить доступ к членам временных объектов?
Могу ли я получить доступ к члену объекта, если я создаю временный объект с помощью class-type-name(parameters).member и предположить, что конструктор сделан? Рассмотрим следующий пример: struct A { enum status { ERROR = -1, SUCCESS } state; A (int …
04 фев '14 в 14:00
1
ответ
Адрес массива prvalue
Я не понимаю, почему это не работает: auto a = (int[]){1, 2, 3, 4, 5}; > error: taking address of temporary array Я понимаю, что массивы lvalue распадаются на указатели при преобразовании в rvalue, но здесь массив уже является rvalue (фактически …
14 фев '19 в 17:51
5
ответов
Как реализовать потокобезопасный контейнер с естественным синтаксисом?
Предисловие Код ниже приводит к неопределенному поведению, если используется как есть: vector<int> vi; ... vi.push_back(1); // thread-1 ... vi.pop(); // thread-2 Традиционный подход - это исправить std::mutex: std::lock_guard<std::mutex>…
20 фев '19 в 07:56