Как обработать только одного участника в конструкторе копирования и оператора назначения, оставляя других для обработки C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как обработать только одного участника в конструкторе копирования и оператора назначения, оставляя других для обработки

Сообщение Anonymous »

У меня есть один участник, который требует глубокой копии ( здесь) и многие другие участники ( здесь), который я не хочу копировать вручную в конструкторе копирования и оператора назначения, как в этой демонстрации (я решил не размещать здесь фактические указатели и управление памятью, так как они будут делать примером кода длинным и не помогут с темой ключа):

#include

struct C {
float f1 = 0.0f; // Lots of members like this which I don't want to copy manually
float f2 = 0.0f; // In actual code dynamically allocated memory that needs deep copy

C(float f1 = 0.0f, float f2 = 0.0f) : f1(f1), f2(f2) {}
C(const C& other_obj)
: f1(other_obj.f1) // (1) I'd like to avoid this for many members
{ f2 = 2.0f * other_obj.f2; }

C& operator = (const C& other_obj) {
f1 = other_obj.f1; // (2) I'd like to avoid this for many members
f2 = 2.0f * other_obj.f2;
return *this;
}
};

int main()
{
C o1( 1.0f, 2.0f);
C o2(o1);

C o3;
o3 = o1;

std::cout

Подробнее здесь: https://stackoverflow.com/questions/796 ... t-operator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»