Еще о конструкторах

Есть еще одинспособ инициализации объекта с помощью списка инициализаторов данных объекта.

Этот список помещается при описании конструктора между списком параметров и телом конструктора:

<имя класса> (список параметров): < список инициализаторов>

{ тело конструктора }

Пример:

Class A

{ int ii; float ee; char cc;

Public: A(int i, float e, char c): ii (7),

ee(ii + i * e),

Cc(c)

{ }

...

};

A a(5, 1.2. ‘ f’); // создается объект с компонентами a.ii =7,

// a.ee = 13, a.cc=’f’

- Параметром конструктора не может быть его собственный класс, но

может быть ссылка на него.

- В классе может быть несколько конструкторов, но только один с

умалчиваемыми значениями параметров.

- Нельзя получить адрес конструктора.

- Если в определении класса нет конструктора, то компилятор автоматически предоставляет конструктор по умолчанию, который и создает неинициированный объект

<Имя класса> < имя объекта>;

Если есть хоть один конструктор с параметрами (но без значений по- умолчанию), для того чтобы иметь возможность создать неинициированный объект надо объявить в теле класса конструктор по умолчанию:

<Имя класса> () { };

тогда используя конструкцию

<Имя класса> < имя объекта>;

можно объявить неинициированный объект.

Примеры:

1.

… сlass Book {

public:

char title[40];

char author[20];

float price;

Book (char*atitle, char*aauthor, float aprice); // прототип

// конструктора

~Book(); // прототип деструктора

void show_book(void) { cout<<’\n’<< title<< “, “<<price;}

};

Book::Book(char*atitle, char*aauthor, float aprice)

{ strcpy(title, atitle); strcpy(author, aauthor);

price = aprice; }

Book::~Book()

{ cout <<’\n’<< “Уничтожение экземпляра:”<< title;}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: