不想允许“智能指针smart<int> o1(new int())”。
创始人
2025-01-10 07:30:08
0

在C++中,我们可以通过私有化智能指针的构造函数和拷贝构造函数,以及将智能指针类声明为友元类来阻止直接创建智能指针对象。下面是一个示例代码:

#include 

template
class smart_ptr {
private:
    T* ptr;
    smart_ptr(T* p) : ptr(p) {} // 私有构造函数

public:
    smart_ptr() : ptr(nullptr) {} // 默认构造函数
    ~smart_ptr() { delete ptr; } // 析构函数

    // 友元声明
    template
    friend smart_ptr make_smart_ptr(U* p);

    // 禁用拷贝构造函数
    smart_ptr(const smart_ptr& other) = delete;

    // 禁用赋值操作符
    smart_ptr& operator=(const smart_ptr& other) = delete;

    T* operator->() const { return ptr; }
};

template
smart_ptr make_smart_ptr(T* p) {
    return smart_ptr(p);
}

int main() {
    smart_ptr o1 = make_smart_ptr(new int()); // 编译错误,禁止直接创建智能指针对象

    return 0;
}

在上面的代码中,我们将智能指针的构造函数声明为私有,这样就不能直接创建智能指针对象。通过友元函数make_smart_ptr来创建智能指针对象,该函数可以访问智能指针的私有构造函数。同时,我们还禁用了拷贝构造函数和赋值操作符,以防止智能指针对象的拷贝和赋值。这样,就可以达到不允许直接创建智能指针对象的目的。

相关内容

热门资讯

透视代打!智星德州菠萝透视插件... 透视代打!智星德州菠萝透视插件工具,hhpoker可以控制牌吗,黑科技教程(有挂辅助);智星德州菠萝...
透视线上"hhpok... 透视线上"hhpoker有后台操作吗"详细辅助新2025版(可以发冤家牌软件)1、点击下载安装,微扑...
透视有挂!wpk辅助ai,wp... 透视有挂!wpk辅助ai,wpk模拟器,细节揭秘(有挂黑科技)1、下载好wpk辅助ai辅助软件之后点...
透视免费"hhpok... 透视免费"hhpoker哪个俱乐部靠谱"详细辅助黑科技教程(钻石可以看底牌技巧)关于hhpoker哪...
透视好牌!wepoker透视脚... 透视好牌!wepoker透视脚本,hhpoker德州挂真的有吗,安装教程(有挂教程);1、透视好牌!...
透视数据"wepok... 1、透视数据"wepoker辅助插件功能"详细辅助2025新版(插件下载透明)(UU poker、w...
透视工具!wepoker透视版... 透视工具!wepoker透视版下载,智星德州插件2024最新版,2025新版技巧(有挂解密)wepo...
透视了解"wepok... 透视了解"wepoker怎么下载游戏"详细辅助技巧教程(辅助分析器攻略)准备好在wepoker怎么下...
透视讲解!wepoker透视脚... 透视讲解!wepoker透视脚本苹果版,wepoker有人用过吗,分享教程(有挂细节);1)wepo...
透视教学"wepok... 透视教学"wepoker一直输的号能继续打吗"详细辅助攻略教程(私人辅助软件透视);支持2-10人实...