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

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

Main(void). {Timer tarray[3]={Timer(),Timer(8),Timer(8,1)}; for(int i=0;i<3;i+..  Просмотрен 272

{Timer tarray[3]={Timer(),Timer(8),Timer(8,1)};

for(int i=0;i<3;i++)tarray[i].display();

return 0;}

Масиви об'єктів можуть розміщуватись у купі та адресуватись за допомогою покажчиків:

Main()

{Timer*tarrayp;

tarrayp=new Timer[6];

for(int i=0;i<6;i++)

tarrayp[i].display();

delete[ ]tarrayp;

return 0;}

У цьому прикладі шість разів викликається конструктор за умовчанням при виділенні пам'яті оператором new та шість разів – деструктор при звертанні до delete, яка вжита в специфічній формі – із квадратними дужками (C++ ігнорує будь-які значення всередині дужок).

7.8. Статична пам'ять і класи

 

При вивченні класів пам'яті ми вже зустрічалися з класом static. Специфікатор класу пам'яті static впливає на час життя та область дії змінної чи функції. Змінна, оголошена зі специфікатором класу пам'яті static, існує в єдиному екземплярі в межах області видимості.

Клас пам'яті static може використовуватись і при оголошенні полів класу. Специфіка статичних полів полягає в тому, що вони мають одне й те саме значення в усiх об'єктах даного класу. Іншими словами, якщо описати статичне поле при заданні класу, то в усіх його екземплярів значення відповідного поля завжди буде однаковим. Зміна значення статичного поля в одному з об'єктів класу приведе до зміни цього значення в усіх його екземплярах (для всіх екземплярів класу виділяється одне й те саме місце в пам'яті для збереження статичного поля).

class statpol {

public:

static int i;}a,b,c;

Main()

{a.i=1;

cout<<b.i<<"\n";

cout<<c.i<<"\n";}

Для роботи зі статичним полем у С++ версії 3.11 необхідно оголошувати його за межами протоколу класу. При компіляції наведеного вище прикладу помилки не виникне, але вона виникне на етапі лінкування програми. Щоб її уникнути, необхідне зовнішнє оголошення:

int statpol::i;

Статичні поля можуть ініціалізуватися за допомогою глобальних оголошень типу

int statpol::i=1;

Доступ до статичного поля можна здійснювати й за допомогою операції розширення області видимості, яка застосовується до імені відповідного класу:

Main()

{

Предыдущая статья:Void main(void). {empty second("second");} Результати роботи програми: ство.. Следующая статья:Static B a B;
page speed (0.0121 sec, direct)