这是我们学完C++之后,老师给的两道题。是他当年面试的时候遇到过的,呵呵。
1、编程实现一个类,要求别人在使用该类时,只能从堆上分配该类的对象,而不能从栈上分配,即别人从栈上分配该对象时会出现编译错误。(提示:将构造函数设置为private,并提供其他成员函数,比如instance(),返回从堆上分配的对象。)2、在步骤1的基础上,增强该类的限制,要求别人在使用该类时,无论怎么调用instance()函数,在整个进程的范围内,都只生成一个该类的对象。(提示:用一个静态成员变量指针来指向该对象。)
下面是写的程序:
#include <iostream>
using namespace std;
class heap
{
int i;
heap()
{
i = 10;
}
heap(int x)
{
i = x;
}
public:
static heap *p;
static heap *instance(int y)
{
if (p != NULL)
return p;
else
p = new heap(y);
cout<<"new in heap"<<endl;
return p;
}
void print()
{
cout<<i<<endl;
}
};
heap* heap::p = NULL; //初始化静态变量
int main()
{
heap *b = heap::instance(1);
b->print();
heap *c = heap::instance(2);
c->print();
b->print();
cout<<b<<endl;
cout<<c<<endl;
return 0;
}
|
阅读(1193) | 评论(0) | 转发(0) |