C++如何限制类对象只能静态分配或者只能只能动态分配
Published on 2022-07-11 10:10 in 分类: C/C++ with 萧海~
分类: C/C++

C++如何限制类对象只能静态分配或者只能只能动态分配

    动态分配就是用运算符new来创建一个类的对象,在堆上分配内存。

    静态分配就是A a;这样来由编译器来创建一个对象,在栈 上分配内存。

    (1)动态分配(在堆上分配内存)

    将类的构造函数和析构函数设为protected属性,这样类对象不能够访问,但是派生类能够访问,能够正常的继承。同时创建另外两个create和destory函数类创建对象。(将create设为static原因是:创建对象的时候是A *p = A::create(); 只有静态成员函数才能够通过类名来访问。)

    class A
    {
    protected:
    A(){}
    ~A(){}
    public:
    static A* create()
    {
    return new A();
    }
    void destory()
    {
    delete this;
    }
    };

    (2)静态分配(在栈上)
    把new、delete运算符重载为private属性就可以了。

    class A
    {
    private:
    void* operator new(size_t t){} // 注意函数的第一个参数和返回值都是固定的
    void operator delete(void* ptr){} // 重载了new就需要重载delete
    public:
    A(){}
    ~A(){}
    };
    posted @   萧海~  阅读(140)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
    · 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
    · 【自荐】一款简洁、开源的在线白板工具 Drawnix
    · 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
    · Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
    点击右上角即可分享
    微信分享提示
    电磁波切换