教你如何用C++创建一个特殊的类(2)

3、定义一个只可以在栈上创建对象的类
    如果理解了上一种,就应该知道这里该如何去做。只要我们只提供在栈上获取对象的方式即可,由于栈空间是由操作系统维护了,没有特殊需要,析构函数就没有必要显式给出,代码如下:

class A
{
public:
    static A Get_A(int x)
    {
        return A(x);
    }
private:
    A(int a = 10)
        :_a(a)
    {}
private:
    int _a;
};
 
int main()
{
    A pa = A::Get_A(9);
    A pb = A::Get_A(7);
    return 0;
}

只能在栈上或者只能在堆上创建的对象,实现起来原理是一样的,类的构造和析构函数都设置为私有,当我的接口函数提供的方法是从堆中创建的对象时,类就只能在堆上创建对象,当我的接口函数提供的是从栈上直接得到的对象的话,类就只可以在栈上创建对象。需要注意一点的是,创建栈上对象的时候,不可以返回临时对象的引用,这个就不再多解释。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ad67caeb392732cab49890668a6508ec.html