动态数组实现Point对象栈类

本文介绍了如何使用动态数组来实现Point对象的栈类。详细讲解了new运算符动态分配内存的过程,包括如何初始化数组元素。同时,讨论了delete运算符在释放内存避免内存泄漏中的作用。还展示了Point类和StackOfPoints类的定义及实现代码。
摘要由CSDN通过智能技术生成

动态数组实现Point对象栈类

1.new

运算符new的功能是动态分配内存,或者称为动态创建堆对象,语法形式为

new 数据类型(初始化参数列表);

int *point;
point = new int(2);

动态分配了用于存放int类型数据的内存空间,并将初值2存入该空间中,然后将首地址赋给指针point

new也可以创建数组类型对象,这时需要给出数组的结构说明。用new运算符创建一维数组的语法形式为

new 类型名[数组长度]

如创建一个整型动态数组

int *p = new int[10]();
2.delete

运算符delete用来删除new建立的对象,释放指针所指向的内存空间。格式为

delete 指针名

如果是用new建立的数组,用delete删除时在指针名前面要加[],格式如下

delete[] 指针名

new分配的内存,必须用delete加以释放,否则会导致动态分配的内存无法回收,使得程序占据的内存越来越大,这叫做“内存泄漏。对同一内存空间多次使用delete进行删除会导致运行错误。


可以将数组的建立和删除过程封装起来,形成一个动态数组类。如实现一个Point对象栈类。

Point类定义

class Point{
public:
    Point():x(0),y(0){}
    Point(int x, int y):x(x),y(y){}
    Point(Point &p){
        x = p.x;
        y = p.y;
    }
    ~Point(){}
    int getX() const{
  return x;}
    int getY() const{
  return y;}
    void move(int newX, int newY){
        x = newX;
        y = newY;
    }
private:
    int x, y;
};

StackOfPoints类定义

class StackOfPoints{
   
public:
    StackOfPoints(int size):size(size){
        points = new Point[size];       // new建立动态数组,长度为size
    }
    ~StackOfPoints(){
        delete[] points;            // delete删除动态数组
    }
    void Push(Point p){
        if(coun
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值