C++关于类的两道题

1241阅读 0评论2009-08-18 jimylion
分类:C/C++

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

上一篇:linux下网络编程常用头文件
下一篇:linux下几种服务器的配置使用之一:nfs tftp