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

中山建网站哪家好广州百度seo排名优化

中山建网站哪家好,广州百度seo排名优化,搜索网站显示网页无法访问,网站站外链接C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…

C++中只能有一个实例的单例类

前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统:
President One, Two, Three;
由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目标是确保 President 类有且只有一个化身,即有了一个 President 对象后,就禁止创建其他的 President 对象。要实现这种功能强大的模式,可使用单例的概念,它使用私有构造函数、私有赋值运算符和静态实例成员。

提示:

将关键字 static 用于类的数据成员时,该数据成员将在所有实例之间共享。
将 static 用于函数中声明的局部变量时,该变量的值将在两次调用之间保持不变。
将 static 用于成员函数(方法)时,该方法将在所有成员之间共享。

要创建单例类,关键字 static 必不可少,如以下示例程序所示:

#include <iostream>
#include <string>
using namespace std;class President
{private:President() {}; // private default constructorPresident(const President&); // private copy constructorconst President& operator=(const President&); // assignment operatorstring name;public:static President& GetInstance(){// static objects are constructed only oncestatic President onlyInstance; return onlyInstance;}string GetName(){ return name; }void SetName(string InputName){ name = InputName; }
};int main()
{President& onlyPresident = President::GetInstance();onlyPresident.SetName("Abraham Lincoln");// uncomment lines to see how compile failures prohibit duplicates// President second; // cannot access constructor// President* third= new President(); // cannot access constructor// President fourth = onlyPresident; // cannot access copy constructor// onlyPresident = President::GetInstance(); // cannot access operator=cout << "The name of the President is: ";cout << President::GetInstance().GetName() << endl;return 0;
}

输出:

The name of the President is: Abraham Lincoln

分析:

第 28~43 行的 main( )包含大量注释,演示了各种创建 President 实例和拷贝的方式,它们都无法
通过编译。下面逐一进行分析。
34: // President second; // cannot access constructor
35: // President* third= new President(); // cannot access constructor
第 34 和 35 行分别试图使用默认构造函数在堆和自由存储区中创建对象, 但默认构造函数不可用,因为它是私有的,如第 7 行所示。
36: // President fourth = onlyPresident; // cannot access copy constructor
第 36 行试图使用复制构造函数创建现有对象的拷贝(在创建对象的同时赋值将调用复制构造函数),但在 main( )中不能使用复制构造函数,因为第 8 行将其声明成了私有的。
37: // OnlyPresident = President::GetInstance(); // cannot access operator=
第 37 行试图通过赋值创建对象的拷贝,但行不通,因为第 9 行将赋值运算符声明成了私有的。因此, 在main( )中, 不能创建President类的实例, 唯一的方法是使用静态函数GetInstance( )来获取President的实例,如第 30 行所示。 GetInstance( )是静态成员,类似于全局函数,无需通过对象来调用它。GetInstance( )是在第 14~19 行实现的, 它使用静态变量 onlyInstance 确保有且只有一个 President 实例。
为更好地理解这一点,可以认为第 17 行只执行一次(静态初始化),因此 GetInstance( )返回唯一一个President 实例,而不管您如何频繁地调用 President:: GetInstance( )。

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

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

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

相关文章:

  • 门户网站建设文案广州免费打hpv疫苗预约条件
  • 模板网站搭建关键词优化快排
  • 金华建站价格网站建设链接
  • 河北网站推广优化广州网站建设性价比
  • 网站建设费算广告费吗微信公众平台公众号
  • 沈阳网站建设024w网站的建设与管理自考
  • php自适应网站开发wordpress开发教程
  • 北京正邦网站建设自己开发app要多少钱
  • 做网站的费用 可以抵扣吗杭州app开发公司哪家好
  • 网站开发自适应不同分辨率软文营销案例文章
  • 站长工具推荐网站赣州信息港主页
  • 做ppt用什么网站好英文站友情链接去哪里查
  • 在线做插画的网站用asp做的一个网站实例源代码
  • 做网站是用什么软件影视拍摄制作的公司
  • 贵阳白云区城乡建设局网站在建项目查询在哪里查
  • 四平市住房和城乡建设局网站好看的网站页面
  • 网站开发最快的语言php怎样做网站
  • 企业网站维护合同手机端网站整站下载
  • 做水果蔬菜生意网站互联免费虚拟主机
  • 搭建一个网站需要什么关键词优化公司电话
  • 自学移动端网站开发php源码之家
  • 永康住房和城乡建设部网站网站建设学
  • 网站建设方案书 icp备案新开传奇手游
  • 东莞做网站怎么样社群运营外包
  • 做网站和微信公众号需要多少钱杏坛网站建设
  • 网站后台管理软件网站关键词优化wang
  • 茶叶怎么做网站销售网站域名费会计分录怎么做
  • 三沙网站建设白帽seo和黑帽seo
  • 直播网站开发教程公司网站用什么语言开发
  • 做期货新闻比较好的网站菏泽市网站建设