Всего на сайте:
210 тыс. 306 статей

Главная | Механика

Long dt;. char*dts; publiс: TT(int,int); }; TT::TT(i..  Просмотрен 248

char*dts;

publiс:

TT(int,int);

};

TT::TT(int a,int n)

{dt=a;

dts=(char*)malloc(n*sizeof(char));}

 

Main()

{

TT t2(1,15);

//...}

При оголошенні TT t2(1,15); одразу викликається конструктор класу, який ініціалізує поле dt і виділяє пам'ять. Умовою його виклику є відповідність параметрів, указаних у дужках, до сигнатури конструктора. Якщо в нашому прикладі оголосити змінну t2 як TT t2(1,1); то буде видане повідомлення про помилку. Адже конструктора з відповідною сигнатурою не існує.

У класах може бути оголошено кілька конструкторів за правилами перевантаження функцій, допускається використання параметрів за умовчанням. Специфічну роль відіграють конструктори, які мають порожній список параметрів. Вони називаються конструкторами за умовчанням. Якщо такий конструктор у класі є, то він завжди автоматично викликається при входженні екземпляра класу в область видимості. Наприклад:

class TT {

private:

Long dt;

char*dts;

publiс:

TT();};

TT::TT(void)

{

dt=0;

dts=(char*)malloc(10*sizeof(char));}

Main()

{

TT v;

//....}

У момент оголошення змінної-екземпляра класу v відбувається виклик конструктора за умовчанням. Розглянемо ще один приклад. Опишемо клас

Class example

{

public:

Int i;

example(int i){i=_i;}

};

і визначимо екземпляр класу: example a;

Виникає помилка. Адже в класі example немає void-конструктора. У такій ситуації необхідно визначити цей конструктор, хоча б з формально порожнім тілом:

Предыдущая статья:Timer v;. За такого оголошення відбувається лише виділення памяті для відповідно.. Следующая статья:Void f(void). {Timer today; const char*sp; sp=today.GetsTime(); cout<<"..
page speed (0.0168 sec, direct)