пройдет ли это или нет? чтото я торможу...
От: iskatel  
Дата: 23.08.05 16:15
Оценка:
вобщем есть структура

struct a
{
AnsiString s;
};

и класс

class b
{
public:
b(a param); //конструктор
void f();

private:
a data;
};

b::b(a param)
{
data=param;
}

b::f()
{
//чтото делаем с data, не важно..
}

это работает, но вот что смущает:
в конструкторе вроде как происходит поразрядное копирование структуры, т.е. копируется адрес объекта AnsiString из param в data
затем param выходит из области видимости и уничтожается, s в data теперь указывает на мусор? или всетаки копируется объект AnsiString?
Re: пройдет ли это или нет? чтото я торможу...
От: Владик Россия  
Дата: 23.08.05 17:11
Оценка:
Здравствуйте, iskatel, Вы писали:

I>в конструкторе вроде как происходит поразрядное копирование структуры,


В конструкторе происходит присваивание с помощью оператора =. Дефолтовый оператор = в С++ копирует объекты почленно. Поэтому все работает и поэтому всячески не рекомендуют использовать для копирования объектов memcpy (которая копирует побитово).
Как все запущенно...
Re[2]: пройдет ли это или нет? чтото я торможу...
От: iskatel  
Дата: 23.08.05 17:19
Оценка:
тоесть смоздастся новый объект AnsiString уже в data? значит я написал правильно и так параметры классу передавать можно, риска нет?
Re[3]: пройдет ли это или нет? чтото я торможу...
От: Владик Россия  
Дата: 23.08.05 17:29
Оценка:
Здравствуйте, iskatel, Вы писали:

I>тоесть смоздастся новый объект AnsiString уже в data? значит я написал правильно и так параметры классу передавать можно, риска нет?


Да, все корректно.
Как все запущенно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.