动态数组实现Point对象栈类

动态数组实现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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值