-Рубрики

 -Музыка

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в TheLenka

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 03.01.2009
Записей:
Комментариев:
Написано: 265


Создание объектов в “куче”

Среда, 24 Июня 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;
}

 


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку