码迷,mamicode.com
首页 > 编程语言 > 详细

动态数组类

时间:2016-05-13 00:46:25      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

在动态数组类中,通过类的成员函数访问数组元素,可以在每次访问之前检查一下下标是否越界,使得数组下标越界的错误能够及早被发现。这种检查,可以通过C++的assert来进行。assert的含义是“断言”,它是标准C++的cassert头文件中定义的一个宏,用来判断一个条件表达式的值是否为true,如果不为true,则程序会中止,并且报告出错误,这样就很容易将错误定位。
以下是一个简单的动态数组类示例

 #include<iostream>
 #include<cassert>
using namespace std;
class point{
public:
    point():x(0),y(0)
    {
        cout<<"default constructor called."<<endl;
    }
    point(int x,int y):x(x),y(y)
    {
        cout<<"constructor called."<<endl;
    }
    ~point()
    {
        cout<<"destructor called."<<endl;
    }
    int getx() const {return x;}
    int gety() const {return y;}
    void movee(int newx,int newy)
    {
        x=newx;
        y=newy;
    }
private:
    int x,y;

};
class arrayofpoints
{
public:
    arrayofpoints(int sizee):sizee(sizee)
    {
           points=new point[sizee];
    }
    ~arrayofpoints()
    {
        cout<<"deleting..."<<endl;
        delete[] points;
    }
    //获得下标为index的数组元素
    point element(int index)
    {
        assert(index>=0&&index<sizee);//如果数组下标越界,程序中止
        return points[index];
    }
private:
    point *points;
    int sizee;
};
int main()
{
    int countt;
    cout<<"please enter the count of points:";
    cin>>countt;
    arrayofpoints points(countt);//创建对象数组
    points.element(0).movee(5,0);//访问数组元素的成员
    points.element(1).movee(15,20);
    return 0;
}

个人理解:简单来说就是通过类的组合,实现 一个类point是另一个数组类arrayofpoints的元素,如果理解不到位,欢迎改正。

动态数组类

标签:

原文地址:http://blog.csdn.net/stubbornaccepted/article/details/51346947

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!