Описание тега copy-initialization
Инициализирует объект из другого объекта
1
ответ
Концептуально ли инициализация списка копирования вызывает copy ctor?
До C++11 мы можем выполнить инициализацию копирования, написав что-то вроде A a = 1; что более или менее эквивалентно A a = A(1);, То есть сначала создается временный объект, а затем вызывается копия ctor. Независимо от исключения копирования, это д…
17 ноя '14 в 01:35
1
ответ
Почему инициализация копирования такая, какая она есть? Зачем нужен конструктор копирования?
Возможный дубликат: Какова причина того, что копирование и прямая инициализация ведут себя по-разному? И под инициализацией копирования я имею в виду так: struct MyStruct { MyStruct(int) {} MyStruct(const MyStruct&) {} }; MyStruct s = 5; // need…
04 дек '12 в 04:18
1
ответ
Почему я не могу скопировать-инициализировать поток строк из строки?
Следующий код не работает в GCC, Clang и Visual Studio: #include <string> #include <sstream> int main() { std::string s = "hello"; // ok, copy-initialization std::stringstream ss1(s); // ok, direct-initialization std::stringstream ss2 = …
15 окт '13 в 22:30
0
ответов
Почему мы различаем между копией и прямой инициализацией?
У меня есть следующие вопросы, и я надеюсь, что вы можете мне помочь. Код: A a; //A(void) is called A b(a); //A(const A&) is called: direct-initialization A c = a; //A(const A&) is called: copy-initialization Почему мы различаем эти инициали…
12 ноя '16 в 22:48
2
ответа
Инициализация копирования C++ + неявный вызов конструктора = ошибка
Этот код: class foo { int x; public: foo(int x) : x(x) { } int get() const { return x; } //... }; class bar { int x; public: bar(const foo& x) : x(x.get()) { } int get() const { return x; } bar& operator =(const foo& rhs) { x = rhs.get()…
16 фев '13 в 21:17
1
ответ
Используют ли неявные преобразования типа класса конструктор копирования?
Следующая цитата из моей книги C++: Когда мы используем прямую инициализацию, мы просим компилятор использовать обычную функцию сопоставления, чтобы выбрать конструктор, который лучше всего соответствует аргументам, которые мы предоставляем. Когда м…
25 авг '15 в 23:03
2
ответа
Нет соответствующей функции в классе шаблона
При попытке скомпилировать этот код на моем компиляторе mingw32 я не получаю соответствующую функцию-член #include <iostream> using std::cout; template <class T> class Pattern { public: Pattern(): element(){ cout<< "default c-tor";…
03 окт '10 в 03:21
2
ответа
Явные и неявные конструкторы
class Test { public: Test(int i) { cout<<"constructor called\n";} Test(const Test& t) { cout<<" copy constructor called\n";} }; class Test1 { public: Test1(int i) { cout<<"constructor called\n";} explicit Test1(const Test1&…
21 авг '15 в 04:15
1
ответ
Почему оператор преобразования не вызывается при использовании синтаксиса инициализации, и почему сообщение об ошибке clang кажется неправильным?
У меня есть следующий код, который создает один объект t2 с помощью явного конструктора преобразования, который выполняет неявное преобразование t1. Это ожидается и описано в языке программирования C++, в разделе 11.4.1 третьего издания. #include &l…
15 ноя '13 в 19:06
2
ответа
Скопировать конструктор / оператор присваивания путаницы при инициализации объекта
В чем разница между этим: class_name object_name = something; а также class_name object_name(something); Из того, что я здесь прочитал, оба используют конструктор копирования, но я не понимаю, почему это происходит и как в игру вступают неявные прео…
08 дек '13 в 13:51
1
ответ
Ослабление требований инициализации копирования в C++17
Я смущен заявлениями cppref: [...] Результат преобразования, который является выражением prvalue (начиная с C++17), если использовался конструктор преобразования, затем используется для прямой инициализации объекта. Последний шаг обычно оптимизирует…
17 фев '18 в 04:05
1
ответ
Чтобы уточнить мои идеи, чтобы скопировать инициализацию и прямую инициализацию
Определите класс следующим образом: class A { public: A(): s("") {} //default constructor A(const char* pStr): s(pStr) {} //constructor with parameter A(const A& a) : s(a.s) {} //copy constructor ~A() {} //destructor private: std::string s; }; К…
18 июл '18 в 01:57
1
ответ
Использование метода цепочки в продолжении копирования конструктора / инициализации в одной декларации операторов в C++?
Как вы знаете, мы обычно используем возврат по ссылке для цепочки методов, я использую возврат по ссылке в первом коде, а результат - как я и предсказывал. Во втором блоке кода, когда я не использовал возврат по ссылке, цепочка была разорвана, и ожи…
22 июл '18 в 11:48
1
ответ
Какие из этих преобразований должны быть неоднозначными?
У меня есть код, подобный следующему: class bar; class foo { public: operator bar() const; }; class bar { public: bar(const foo& foo); }; void baz() { foo f; bar b = f; // [1] const foo f2; bar b2 = f2; // [2] } GCC выдает ошибку в [2], но не [1…
11 авг '17 в 13:29
1
ответ
Это не инициализация копирования, или это так?
В следующем коде мне не разрешено объявлять явный ctor, потому что компилятор говорит, что я использую его в контексте инициализации копирования (clang 3.3 и gcc 4.8). Я пытаюсь доказать неправоту компиляторов, сделав ctor неявным, а затем объявив к…
13 дек '13 в 05:18
1
ответ
Привязка ссылок через оператор неоднозначного преобразования
#include <iostream> using namespace std; struct CL2 { CL2(){} CL2(const CL2&){} }; CL2 cl2; struct CL1 { CL1(){} operator CL2&(){cout<<"operator CL2&"; return cl2;} operator const CL2&(){cout<<"operator const CL2&am…
06 дек '15 в 16:35
2
ответа
Инициализация копирования: почему конструктор перемещения или копирования не вызывался, даже если отключено копирование?
У меня другой вопрос, потому что я могу знать, что такое копирование. Я учусь инициализации копии. Тем не менее, следующий код смутил меня, потому что я уже отключил копирование с помощью -fno-elide-contructors -O0 вариант. #include <iostream>…
10 июл '18 в 05:34
6
ответов
Странное поведение инициализации копирования, не вызывает конструктор копирования!
Я читал разницу между прямой инициализацией и инициализацией копирования (§8.5/12): T x(a); //direct-initialization T y = a; //copy-initialization Что я понял из чтения об инициализации копирования, так это о том, что для этого нужен доступный и нея…
28 май '11 в 16:56
2
ответа
Скопируйте инициализацию формы '= {}'
Учитывая следующее: #include <stdio.h> class X; class Y { public: Y() { printf(" 1\n"); } // 1 // operator X(); // 2 }; class X { public: X(int) {} X(const Y& rhs) { printf(" 3\n"); } // 3 X(Y&& rhs) { printf(" 4\n"); } // 4 }; // …
01 июн '17 в 11:43
2
ответа
C++(11): когда использовать прямую или копировать инициализацию, если оба в порядке
До того, как начнутся крики о дублировании: я знаю, что следующий вопрос (и некоторые другие) довольно тесно связаны с этим: Есть ли разница в C++ между инициализацией копирования и прямой инициализацией? Ответы на этот вопрос прекрасно объясняют сц…
25 фев '13 в 12:38