Deutsch

кто сил╦н в с++

06.10.05 17:34
Re: кто силён в с++
 
voxel3d Мальчик ветра
voxel3d
в ответ tormosilka 06.10.05 17:19, Последний раз изменено 06.10.05 17:41 (voxel3d)
В ответ на:
class zeichen {
private:
char _z;
public:
zeichen (char z='A') : _z(z)
{
cout<<'B'<<" ";
}
};

Это конструктор. Он принимает один параметр, который по-умолчанию инициализируется символом 'А'. Далее, до захода в тело конструктора, полe _z инициализируется параметром переданным в конструктор либо значением по-умолчанию ('A'), если таковой не был передан.
Эта конструкция называется списком инициализации, в котором можно либо вызвать конструкторы базовых классов, либо проинициализировать поля класса. При отсутствии списка инициализации, и инициализации полей непосредственно в теле конструктора:
В ответ на:
zeichen (char z='A')
{
_z = z;
cout<<'B'<<" ";
}

будет происходить изменение поля _z дважды, сначала оно примет значение по-умолчанию, в данном случае (т.к. char это POD тип) это будет произвольный мусор, потом в теле конструктора произойдёт присвоение значения, чтобы этого избежать, как раз и применяют списки инициализации.
---
Идиотов и фриков перевоспитать невозможно!
Dropbox - средство синхронизации и бэкапа файлов.
 

Перейти на