• Авторизация


Создание объектов в “куче” 24-06-2009 16:12 к комментариям - к полной версии - понравилось!



Для того чтобы оперировать   памятью, выделяемой для объектов, объекты классов следует создавать динамически, что позволяет освободить память, когда объект теряет свою актуальность. В таком случае говорят, что объект создается в куче (heap). При обычном же создании объектов, говорят, что объект создан в стёке.

Пример:
class A
{
private:
 int x;
public:
 A() : x(0) {}
 A(int nx)
 {
 x=nx;
 }
 void Show()
 {
 cout<<x<<endl;
 }
};
void main()
{
 A *a=new A;
 a->Show();
 A *b=new A(10);
 b->Show();
 delete a;
 delete b;
}

Пример использования деструктора, при удалении объектов из памяти:
class A
{
private:
 int x;
public:
 static int count;
 A() : x(10)
 {
 count++;
 }
 ~A()
 {
 count--;
 }
 void Show()
 {
 cout<<x<<endl;
 }
};
int A::count=0;
void main()
{
 cout<<A::count<<endl; //0
 A *a=new A;
 cout<<A::count<<endl; //1
 A *b=new A;
 cout<<A::count<<endl; //2
 delete a;
 cout<<A::count<<endl; //1
 delete b;
 cout<<A::count<<endl; //0
}
Создание массива объектов динамически
class A
{
private:
 int x;
public:
 static int count;
 A() : x(10)
 {
 count++;
 }
 ~A()
 {
 count--;
 }
 void Show()
 {
 cout<<x<<endl;
 }
};
int A::count=0;
void main()
{
 A *a=new A[3];
 for (int i=0;i<3;i++)
 (a+i)->Show();
// или
 for (int i=0;i<3;i++)
 a[i].Show();
 cout<<endl<<A::count<<endl;
 delete []a;
 cout<<A::count<<endl;
}

 

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Создание объектов в “куче” | TheLenka - Дневник Рыжей Девчонки | Лента друзей TheLenka / Полная версия Добавить в друзья Страницы: раньше»