当前位置: 首页 > news >正文

免费建网站入驻wordpress能连115

免费建网站入驻,wordpress能连115,英语外贸网站建设,html5网页制作案例C中禁止在栈中实例化的类 栈空间通常有限。如果您要编写一个数据库类,其内部结构包含数 TB 数据,可能应该禁止在栈上实例化它,而只允许在自由存储区中创建其实例。为此,关键在于将析构函数声明为私有的: class Monst…

C++中禁止在栈中实例化的类

栈空间通常有限。如果您要编写一个数据库类,其内部结构包含数 TB 数据,可能应该禁止在栈上实例化它,而只允许在自由存储区中创建其实例。为此,关键在于将析构函数声明为私有的:

class MonsterDB
{
private:~MonsterDB(); // private destructor//... members that consume a huge amount of data
};

通过声明私有的析构函数,可禁止像下面这样创建实例:

int main()
{MonsterDB myDatabase; // compile error// … more codereturn 0;
}

上述代码试图在栈上创建实例。退栈时,将弹出栈中的所有对象,因此编译器需要在 main() 末尾调用析构函数 ~MonsterDB(),但这个析构函数是私有的,即不可用,因此上述语句将导致编译错误。
将析构函数声明为私有的并不能禁止在堆中实例化:

int main()
{MonsterDB* myDatabase = new MonsterDB(); // no error// … more codereturn 0;
}

上述代码将导致内存泄露。由于在 main 中不能调用析构函数,因此也不能调用 delete。为了解决这种问题,需要在 MonsterDB 类中提供一个销毁实例的静态公有函数(作为类成员,它能够调用析构函数),如以下示例程序所示:

#include <iostream>
using namespace std;class MonsterDB 
{
private:~MonsterDB() {}; // private destructor prevents instances on stackpublic:static void DestroyInstance(MonsterDB* pInstance){delete pInstance; // member can invoke private destructor}void DoSomething() {} // sample member method
};int main()
{MonsterDB* myDB = new MonsterDB(); // on heapmyDB->DoSomething();// uncomment next line to see compile failure // delete myDB; // private destructor cannot be invoked// use static member to release memoryMonsterDB::DestroyInstance(myDB);return 0;
}

这些代码旨在演示如何创建禁止在栈中实例化的类。为此,关键是将构造函数声明成私有的,如第 6 行所示。为分配内存,第 9~12 行的静态函数 DestroyInstance() 必不可少,因为在 main() 中不能对 myDB 调用 delete。为了验证这一点,您可取消对第 23 行的注释。

数据库类把析构函数设置为私有,只能使用new在自由储存区中创建其对象。如下代码:

class MonsterDB
{
private:~MonsterDB( ) {};
public:static void DestroyInstance(MonsterDB* pInstance){delete pInstance;}//……imagine a few other methods
};int main()
{MonsterDB* pMyDatabase = new MonsterDB();MonsterDB :: DestroyInstance(pMyDatabase);return 0;
}

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

http://www.yayakq.cn/news/439405/

相关文章:

  • 装饰公司为什么做网站京津冀协同发展英语
  • 做加盟童装交流网站网站改版 升级的目的是什么
  • 网站建设项目的费用做什么科目公司网络维护主要做什么
  • 优秀企业网站设计要点成品网站源码68w68游戏
  • 网站开发相关会议深圳品牌沙发
  • 金华专业做网站网站推广渠道的类型
  • 网站建设启凡北京网站建设设计公司哪家好
  • 网站建设是什么职位wordpress私人玩物
  • ios移动网站开发详解 pdf贵州建设厅网站
  • 成都网站建设scjsc888邯郸网站推广
  • 做网站开发的公司个人帮企业做网站
  • 为网站做seo需要什么网站内容与目录结构图
  • 儿童教育自适应网站模板做网站所用的技术
  • 成都定制网站设wordpress网站 app
  • 上海外贸soho网站建设郑州公司网站建设哪家好
  • 公司网站开发费用计入哪个科目长沙cms建站模板
  • 网站建设哪个公司做得好些网站原型设计和版式设计
  • 神华集团 两学一做 网站wordpress修改上传文件路径
  • 杭州英文网站建设天津设计院排名
  • 销售方案网站婚恋网站女孩子都是做美容
  • ppt 做的最好的网站有哪些vps 上装wordpress
  • 通辽网站网站建设北大青鸟计算机培训学费
  • 上门做美容的有什么网站微信h5制作网站开发
  • 建设银行个人官方网站goole官网
  • 重庆企业网站建设哪家好重庆网
  • 装修效果图网站推荐网站营销 海外
  • 在哪网站可以做农信社模拟试卷wordpress 的论坛模板
  • 公司网站建设有哪些公司可以做wordpress插件分享显示
  • 东莞建站公司快荐全网天下特别好邓州十九张麻将微信群app开发公司
  • 重庆市建设工程施工安全管理总站企业网站建设哪家便宜