Оператор копирования умолчания, скопирует ли ?

vertyal17

1)
Есть такая штука например
class gg1
{
public:
int [50] inmember;
int peremint;
long peremlong;
double peremdouble;
}
main
{
class gg1 perem1, perem2;
//
.... тут код где задаем параметры perem1;
//
perem2=perem1;
}
Вопрос, скопирует ли оператор копирования умолчания корректно в perem2, perem1 ?
Интересует, скопируется ли корректно массив inmember, все его значения?
2)
Вот еще такой вопрос, пусть скажем у меня есть некий класс, у которого КУЧА полей. И небольшая часть полей типа char *, (остальные long, int, double) значит надо переопределять конструктор копирования.
Можно ли както вызывать вначале оператор копирования по умолчанию, для всех полей, а потом дополнительно вызывать strdup для полей типа char * ? (Писать оператор присваивания для КУЧИ членов както некрасиво)
Может какойнибудь memcpy подойдет для этой цели?

okunek

1) да, скопирует
2) низя, надо ручками тогда

vertyal17

1)
2)
Спасибо!

maggi14

> Может какойнибудь memcpy подойдет для этой цели?
подойдет. Просто скопируй всю память из-под первого объекта во второй

okunek

Вообще, нащот 2-го я напиздел
По-идее, можно, тока как мне кажется, в стандарте есть слова типа, как расположены в памяти переменные класса - это имплементэйшн дефайнед, хотя в реальности все компиляторы все-таки по порядку их пихают.

okunek

опять напиздел, вобщем, если это POD-данные, то можно memcpy юзать, а если нет - нельзя

psihodog

выдели эти поля в базовый класс (структуру потом унаследуй от этого класса (структуры) свой основной класс. Затем в переопределённом операторе присваивания, вызови дефолтное присваивание для базовых классов (структур остальное доопредели сам.

vertyal17

Я на самом деле просто заменил покачто Char* на CString,
И юзаю соотв. умолчание

rosali

Ну слава богу
Оставить комментарий
Имя или ник:
Комментарий: