C++ 构造函数与析构函数

来源:互联网 发布:穿越火线m4a1千变数据 编辑:程序博客网 时间:2024/05/18 05:40
#include <iostream>using namespace std;const int sz = 20;class Pointer;class Holder{private:int a[sz];public:Holder();~Holder();friend class Pointer;};Holder::~Holder(){}class Pointer{private:Holder* h;int* p;public:Pointer(Holder *hh);void next();  // 指针指向下一个,void previous();  // 指针的前一个void top();  // 第一个将指针移动到第一个,void end();  // 最后一个,void set(int i);  // 修改指针所指向的数,int read();  // 把指针所指向的数取出来,~Pointer();};Pointer::~Pointer(){}Holder::Holder(){memset(a, 0, sz*sizeof(int));}Pointer::Pointer(Holder* rv){h = rv;p = rv->a;}void Pointer::next(){if (p < &h->a[sz - 1]) p++;}void Pointer::previous(){if (p > &(h->a[0])) p--;}void Pointer::top(){p = &(h->a[0]);}void Pointer::end(){p = &(h->a[sz - 1]);}int Pointer::read(){return *p;}void Pointer::set(int i){*p = i;}int main(){Holder h;Pointer hp(&h),hp2(&h);for (int i = 0; i < sz; i++){hp.set(i);hp.next();}hp.top();hp2.end();for (int i = 0; i < sz; i++){cout << "hp = "<< hp.read() <<" , hp2 = "<< hp2.read() << endl;hp.next();hp2.previous();}return 0;}

0 0
原创粉丝点击