Создание объектов в “куче” |
Для того чтобы оперировать памятью, выделяемой для объектов, объекты классов следует создавать динамически, что позволяет освободить память, когда объект теряет свою актуальность. В таком случае говорят, что объект создается в куче (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;
}
Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |