#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;
}
C++ 构造函数与析构函数
最新推荐文章于 2024-09-08 23:49:48 发布