Chinaunix首页 | 论坛 | 博客
  • 博客访问: 642087
  • 博文数量: 99
  • 博客积分: 4335
  • 博客等级: 中校
  • 技术积分: 931
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-26 14:11
文章分类

全部博文(99)

文章存档

2012年(14)

2011年(17)

2010年(14)

2009年(54)

分类: C/C++

2009-08-18 15:33:32

这是我们学完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;
}

阅读(1160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~