Вопросы по теме 'move-constructor'
Как на синтезированный конструктор перемещения C ++ влияют изменчивые и виртуальные члены?
Взгляните на следующий код:
struct node
{
node();
//node(const node&); //#1
//node(node&&); //#2
virtual //#3
~node ();
node*
volatile //#4
next;
};
int main()
{
node...
1059 просмотров
schedule
15.11.2021
Почему перемещение производного класса возможно, а базовый класс - нет?
Рассмотрим следующий пример:
#include <iostream>
#include <string>
#include <utility>
template <typename Base> struct Foo : public Base {
using Base::Base;
};
struct Bar {
Bar(const Bar&) { }...
2312 просмотров
schedule
21.09.2021
Имеет ли смысл конструктор перемещения constexpr?
Имеет ли смысл иметь constexpr конструктор перемещения?
Например, рассмотрим следующее:
#include <array>
class C
{
public:
constexpr C(std::array<int, 3> ar) : m_ar{ar} {}
constexpr C(C&& other) :...
1220 просмотров
schedule
22.09.2021
Почему я использую удаленную функцию 'void std :: ref (const _Tp &&) [with _Tp = int]'
#include<iostream>
#include<utility>
#include<tuple>
#include<functional>
using namespace std;
int main()
{
int i = 0;
auto p = make_pair(ref(i), ref(i++));
p.first++;
p.second++;
cout << "i = "...
2415 просмотров
schedule
13.09.2021
Что такое правило выбора конструктора копирования/перемещения в С++? Когда происходит переход на резервное копирование?
Первый пример:
#include <iostream>
#include <memory>
using namespace std;
struct A {
unique_ptr<int> ref;
A(const A&) = delete;
A(A&&) = default;
A(const int i) : ref(new int(i)) { }
~A() =...
1209 просмотров
schedule
05.04.2022
Передача/перемещение параметров конструктора в C++0x
Если у меня есть конструктор с n параметрами, так что любой аргумент может быть rvalue и lvalue. Можно ли поддерживать это с помощью семантики перемещения для rvalue без написания 2^n конструкторов для каждой возможной комбинации rvalue/lvalue?
5490 просмотров
schedule
17.04.2022
Почему этот конструктор перемещения такой жадный?
У меня есть следующий код:
#include <iostream>
class foo_class {
std::string value;
public:
foo_class(const foo_class& v) : value{v.value} {
std::cout << "copy constructor" << std::endl;
}...
150 просмотров
schedule
20.04.2022
Скопировать или переместить конструктор для класса с членом std::mutex (или другим некопируемым объектом)?
class A
{
private:
class B
{
private:
std::mutex mu;
A* parent = NULL;
public:
B(A* const parent_ptr): parent(parent_ptr) {}
B(const A::B & b_copy) { /* I thought I needed code here */ }
};...
1662 просмотров
schedule
18.08.2022
Переместить конструктор (ссылка на rvalue) в неявном преобразовании
Я обновляю проект C++ с MSVC 2008 до 2010, и из-за нового конструктора перемещения CComBSTR [CComBSTR( CComBSTR&& )] я получаю ошибку компилятора из-за неоднозначного вызова.
По сути, у нас есть класс String, очень похожий на std::wstring, который...
675 просмотров
schedule
24.07.2023
Move Constructor, вызывающий базовый класс Move Constructor
У меня есть базовый класс, который в основном завершает присоединение класса к произвольному дескриптору Windows (например, HWND, HFONT) и использует класс политики для присоединения/отсоединения и уничтожения:
// class SmartHandle...
7269 просмотров
schedule
24.10.2022
Конструктор перемещения не работает неявно для переменных-членов?
Почему это: (vs2010) не перемещает вектор внутри класса?
#include <vector>
class MoveTest
{
public:
std::vector<int> m_things;
};
int _tmain(int argc, _TCHAR* argv[])
{
MoveTest m;
m.m_things.push_back(12);
MoveTest...
1289 просмотров
schedule
25.12.2022
Явный конструктор перемещения?
Ключевое слово explicit рекомендуется для всех большинства конструкторов, которые могут вызываться с одним аргументом , за исключением конструкторов копирования.
Для конструкторов копирования он используется (запрещает неявное копирование...
5301 просмотров
schedule
15.06.2023
Создаются ли конструкторы перемещения автоматически?
У меня есть большой класс, содержащий множество контейнеров STL. Будет ли компилятор автоматически создавать конструктор перемещения, который будет перемещать эти контейнеры в цель, или мне придется создать свой собственный?
10691 просмотров
schedule
15.05.2023
Как написать конструктор перемещения и оператор присваивания для класса, который имеет частный объект в качестве свойства?
Сегодня я изучил конструкторы перемещения . Я прочитал этот ответ и попытался применить в нем пример конструктора перемещения к моему коду.
class UnicodeString
{
public:
enum ENDIANNESS_TYPE {LITTLE_ENDIAN = 0, BIG_ENDIAN = 1}...
262 просмотров
schedule
03.04.2023
Реализация конструктора перемещения путем вызова оператора присваивания перемещения
В статье MSDN Как написать конструктор перемещения содержится следующее рекомендация.
Если вы предоставляете для своего класса и конструктор перемещения, и оператор присваивания перемещения, вы можете устранить избыточный код, написав...
10832 просмотров
schedule
25.04.2023
Как определяется конструктор перемещения по умолчанию для класса с элементами STL?
Я немного искал это, но не смог найти аналогичный пример, поэтому я хотел спросить, чтобы быть уверенным. Если у меня есть класс без явного выделения кучи, а только классы STL, например:
class Klass {
..
private:
vector<int> v;
};...
74 просмотров
schedule
18.07.2023
Как предотвратить повторение кода между функциями-членами rvalue и lvalue?
Для приведенного ниже программного кода мне нужно написать тот же код внутри пары функций-членов, которые получают ссылки на rvalue и lvalue.
Моя цель - использовать только один из пары (например, использовать только те, которые принимают rvalue),...
463 просмотров
schedule
13.10.2022
Переместить конструктор для класса
Я написал два класса, и у меня проблема с их размещением в векторе:
#include <vector>
#include <iostream>
#include <fstream>
class A
{
public:
std::ofstream filestream;
int aa1;
int aa2;
int aa3;
int aa4;...
639 просмотров
schedule
03.07.2023
Как можно вызвать конструктор копирования с помощью rvalue
MWE:
struct A {
A() {std::cout << "constructor" << std::endl; }
A(const A& a) {std::cout << "copy constructor" << std::endl; }
A(A&& a) {std::cout << "move constructor" << std::endl; }...
330 просмотров
schedule
29.04.2023
Перемещение семантики в C++11
Я хотел бы полностью понять семантику перемещения в С++ 11. Поэтому я написал пару классов, чтобы увидеть, когда вызываются разные конструкторы:
#include <iostream>
using namespace std;
class A {
public:
A() : a1_(0) {std::cout...
139 просмотров
schedule
21.01.2023