Описание тега default-copy-constructor

7 ответов

C# Автоматическая глубокая копия структуры

У меня есть структура, MyStruct, который имеет частный член private bool[] boolArray; и метод ChangeBoolValue(int index, bool Value), У меня есть класс, MyClass, что имеет поле public MyStruct bools { get; private set; } Когда я создаю новый объект …
05 июл '12 в 01:35
1 ответ

Неявно сгенерированные конструкторы с явным объявлением деструктора

Дело в том, что 4-е издание языка программирования C++ гласит: В этом конкретном случае, если вы забыли удалить операцию копирования или перемещения, никакого вреда не будет. Операция перемещения не генерируется неявно для класса, где пользователь я…
1 ответ

Скопировать конструктор, определить и объявить разницу?

У меня есть класс Base и класс производного. Если я объявлю конструктор копирования в своем классе, будет ли компилятор определять конструктор копирования при компиляции? Что произойдет, если будет вызван конструктор копирования класса Derived? Зави…
4 ответа

Ошибка MSVC9.0 или недоразумение виртуального наследства и друзей?

Рассмотрим следующий код: class A { friend class B; friend class C; }; class B: virtual private A { }; class C: private B { }; int main() { C x; //OK default constructor generated by compiler C y = x; //compiler error: copy-constructor unavailable i…
2 ответа

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

Я пытаюсь сделать класс матрицы 4*4, он построен из массива из 16 чисел с плавающей запятой, но я также хочу представить его как массив из 4 vec4 (для каждого столбца). Проблема в том, что он не компилируется и выдает ошибку везде, где я вызываю кон…
4 ответа

Являются ли необъявленные конструкторы копирования автоматически встроенными?

Необъявленные (автоматически сгенерированные) конструкторы копирования автоматически помечаются как inline? Если так, и если я не хочу, чтобы они были помечены как inline, означает ли это, что я должен определить один вручную и скопировать каждый от…
5 ответов

Отказ от копирования конструктора

Это может быть глупый вопрос, но... Я писал ряд классов, в которых используются не копируемые элементы. Эти классы никогда не инициализируются через конструктор копирования в моем источнике. Когда я пытаюсь скомпилировать без предоставления своего с…
27 апр '10 в 19:50
1 ответ

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

Можно ли создать экземпляры класса, который предлагает только copy-ctor? Или это хороший дизайн, чтобы также удалить copy-ctor, если один удаляет все другие ctor? struct EmptyClass { EmptyClass() = delete; // using compiler generated copy ctor. // e…
24 ноя '18 в 19:24
1 ответ

Как работает оператор по умолчанию = в C++?

У меня были трудные времена, пытаясь понять, как конструктор копирования по умолчанию и оператор по умолчанию = работают в C++. В следующей программе я не понимаю, почему последняя строка c0 = b2; cout <<endl; распечатывает 32944, Оператор = в…
2 ответа

Делать только константные копии константного объекта

У меня есть класс, который содержит ссылки, такие как: class A { A(B &b) : b(b) {} // constructor B &b; } Иногда b должен быть доступен только для чтения, иногда он доступен для записи. Когда я делаю const A a(b); объект, очевидно, что я хоч…
2 ответа

Избегать копирования по значению при инициализации ссылки

У меня есть интерфейс функции: struct iFace { virtual Type& getType() = 0; } и идея состоит в том, чтобы получить это как: iFace& iface = getIface(); Type& type = iface.getType(); однако иногда я делаю ошибку и пишу: Type type = iface.ge…
7 ответов

Является ли конструктор копирования C++ по умолчанию небезопасным? Являются ли итераторы принципиально небезопасными?

Раньше я считал, что объектная модель C++ очень устойчива, когда следуют передовым методам.Однако несколько минут назад у меня было понимание, которого у меня не было раньше. Рассмотрим этот код: class Foo { std::set<size_t> set; std::vector&l…
1 ответ

В C++0x инициализаторы не статических элементов данных переопределяют неявный конструктор копирования?

Согласно N2628, связанному с C++0x, нестатические инициализаторы членов данных могут быть переопределены явно определенными конструкторами, но это выглядит немного туманным в отношении неявно определенного конструктора копирования. В частности, я за…
21 ноя '11 в 20:53
4 ответа

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

Почему мы передаем объект класса по ссылке. Когда я удаляю амперсанд (&), я получаю следующую ошибку. "Copy constructor of class A may not have parameter of type A" Что это значит? может быть, компилятор не рассматривает данный конструктор копирован…
2 ответа

Я все еще получаю конструктор копирования по умолчанию и оператор =, если я определяю те с неконстантными аргументами?

В C++, если я определяю конструктор копирования и operator=, которые принимают неконстантную ссылку на класс, должен ли компилятор по-прежнему предоставлять версии по умолчанию для константной ссылки? struct Test { Test(Test &rhs); Test &ope…
2 ответа

Почему конструктор копирования не вызывается?

Извините за чрезмерно двусмысленное название.(Из-за отсутствия моих навыков английского языка). Пожалуйста, предложите лучший заголовок. Пожалуйста, рассмотрите следующий код. struct A { typedef std::vector<double> State; // template <class…
06 июн '13 в 02:19
2 ответа

Правильно ли неявно определенный конструктор копирования в C++ вызывает конструктор копирования для членов?

Просто хочу дважды проверить, что конструктор копирования по умолчанию (неявно определенный компилятором) для классов C++ выполняет конструктор копирования для каждой переменной-члена, а также использует старое значение, чтобы получить скопированное…
1 ответ

Код, использующий конструктор копирования по умолчанию, должен быть segfault, но работает просто отлично

Я провел небольшой эксперимент, чтобы лучше понять, когда неявно вызываются конструкторы / деструкторы, и обнаружил нечто действительно странное. Следующий код вызывает конструктор копирования по умолчанию, когда myFunction() называется. Перед выход…
1 ответ

Не требуется ли созданный по умолчанию конструктор для создания всех базовых классов?

Я сталкивался со случаем, когда безопасный с точки зрения типов C++ производит несоответствующие ctor/dtors. Следующий код генерирует два конструктора для A. Конструктор по умолчанию также создает свою базу (B), но сгенерированный по умолчанию ctor …
1 ответ

Как измерить производительность конструктора копирования по умолчанию в C++

Я хотел бы знать, сколько времени моя программа проводит в конструкторе копирования по умолчанию для определенного класса. Есть ли способ реализовать конструктор копирования способом, идентичным способу, которым конструктор копирования по умолчанию …