在C++中,堆栈就是一种特定的内存管理方法。通过堆栈,我们可以方便地动态分配内存空间。在C++代码中,堆栈可以使用stack类嵌套类型来定义。下面是一个简单的堆栈示例代码:
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
while (!s.empty()) {
cout << s.top() << endl;
s.pop();
}
return 0;
}
上面这段C++代码使用了stack类,定义了一个整型的堆栈s,然后将数字1, 2, 3推入堆栈,并依次弹出并打印堆栈中的元素。
除了上述该堆栈的最基本用法之外,C++中还有另一种堆栈——动态内存堆栈。通过动态内存分配,我们可以创建任意大小的对象。下面是一个简单的动态内存堆栈示例代码:
#include <iostream>
using namespace std;
class Shape {
public:
virtual ~Shape() {}
virtual void draw() = 0;
};
class Point : public Shape {
public:
virtual ~Point() {}
void draw() { cout << "Point: " << x << ", " << y << endl; }
int x, y;
};
int main() {
Shape* s = new Point(); // create object
s->draw();
delete s; // delete object to free memory
return 0;
}
上述C++代码中,首先定义了一个抽象类Shape,并继承一个具有实现的子类Point。然后通过动态内存分配,使用new关键字创建一个Point对象。最后使用delete关键字将对象释放掉,释放动态分配的内存,在堆上创建了一个对象。
另一段更实用的代码如下:
#include <iostream>
using namespace std;
class MyArray{
private:
int* ptr;
int size;
public:
// Constructor
MyArray(int s){
size = s;
ptr = new int[s]; //Allocating memory
for(int i=0; i<size; i++)
*(ptr+i) = i+1;
}
// Show array
void show(){
for(int i=0; i<size; i++)
cout << *(ptr+i) << " ";
cout << endl;
}
// Destructor
~MyArray(){
delete[] ptr; // Freeing memory
}
};
int main(){
int n = 10;
MyArray arr(n);
arr.show();
return 0;
}
该程序中,我们定义了一个MyArray类来实现一个自定义的int数组。创建MyArray对象时,我们使用new关键字通过动态内存分配来初始化其底层int数组。析构函数中释放了这个对象占用的内存空间。我们可以将n的值设置为不同的数量来动态地分配相应数量的内存,创建不同大小的MyArray对象。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++中堆栈及创建对象示例代码 - Python技术站