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

上饶门户网站建设思政网站建设管理自查报告

上饶门户网站建设,思政网站建设管理自查报告,手机网站建站工作室,做竞价推广这个工作怎么样文章目录 一、类的初始化二、全局静态对象的初始化 一、类的初始化 对于类中的成员变量的初始化,一般有两种方法,一种是在类中定义的时候直接赋予初值: class CTextBlock { private:std::size_t textLength{ 0 };bool lenisValid{ false }:…

文章目录

  • 一、类的初始化
  • 二、全局静态对象的初始化


一、类的初始化

对于类中的成员变量的初始化,一般有两种方法,一种是在类中定义的时候直接赋予初值:

class CTextBlock {
private:std::size_t textLength{ 0 };bool lenisValid{ false }:
};

另一种是在构造成员函数中初始化列表,在使用这个方法的时候需要注意初始化列表中各个变量的顺序应该和类中各个成员变量声明的顺序一致:

ABEntry::ABEntry(const std::string& name, const std::string& address,const std::list<PhoneNumber>& phones): theName(name),theAddress(address),thePhones(phones),numTimesConsulted(0) {}
成员初始化列表也可以留空用来执行默认构造函数:ABEntry::ABEntry(): theName(),theAddress(),thePhones(),numTimesConsulted(0) {}

二、全局静态对象的初始化

静态对象的初始化一直是一个比较棘手的问题。这是由于 C++对于定义在不同编译单元中的全局静态对象的初始化的相对次序并没有明确定义,因此,下列代码可能会出现使用未初始化静态对象的情况

//File 1 
extern FileSystem tfs;//File 2
class Directory {
public:Directory() {FileSystem disk = tfs;}
};Directory tempDir; 

在这个例子中,你不能保证位于不同编译单元内的 tfs 一定会在 tempDir 之前完成初始化。 为了解决这个问题,可以使用一个叫做迈尔单例模式, 源自于 Effective C++一书的作者迈尔,将全局静态对象转化为局部静态对象

FileSystem& tfs() {static FileSystem fs;return fs;
}Directory& tempDir() {static Directory td;return td;
}//同时应该把Directory的构造函数改造成:
FileSystem disk = tfs(); 

这种做法的好处在于函数内的局部静态对象 td 会在该函数 tempDir被调用的时候被初始化,fs也只会在 tfs()被调用的时候被初始化,不仅让静态变量初始化的顺序可控,而且节省了资源,在没有必要创建他们的时候不进行类变量的创建。

请注意

在多线程环境中,静态局部变量的初始化可能引发线程安全问题。尽管 C++11 标准确保了函数内静态局部变量的线程安全初始化(即在多线程环境下,静态局部变量仅被初始化一次),但这种机制可能导致性能问题,因为每次访问这些变量时都需要进行线程安全检查。

为了避免这种开销和潜在的线程安全问题,一种常见做法是在程序的单线程启动阶段(即在多线程被创建之前)手动初始化这些静态局部变量。这样做可以确保在任何线程开始执行之前,所有需要的静态局部变量都已正确初始化。举一个🌰:

假设我们需要在多线程环境下实现一个 logger 类:

class Logger {
public:static Logger& getInstance() {static Logger instance;return instance;} void log(const std::string& message) {//print(message)...} Logger(const Logger&)=delete;Logger& operator=(const Logger&)=delete;

请注意,在这个单例模式下,我们一般不会在=运算符重载函数下面加上 const, 这是因为这会阻止链式调用,所谓的链式调用,比如:

Type a, b, c;
a = b = c; 在这里上列的语句也可以修改为: 
a = (b = c); 
在这里,如果 b = c返回的是一个 const Logger& ,那就不能赋值给 a,因为 a 需要的是一个非常量引用。

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

相关文章:

  • 易语言如何做网站吗做网站优化用什么软件
  • 静态网页模板网站做直播网站需要学什么
  • 网站图片一般多大尺寸wordpress shortcode插件
  • 社交和门户网站的区别泉州企业网站开发
  • 永康市住房建设局网站网页制作教学
  • 做民宿最大的网站小程序登录入口在哪
  • 网站制作教程谁的好网站营销特点
  • 帮人做设计的网站seo网站制作优化
  • 定制网站建设报价单12380举报网站制度建设
  • app制作教学视频wordpress 中文 seo 插件
  • 云南省建设厅网站建设 网站协议
  • 仿牌网站空间邯郸研情网络科技有限公司
  • 专业做seo的网站百度风云排行榜
  • 网站首页设计图片简约嵌入式软件开发工具的发展趋势是什么
  • 建设网站前期准备工作广告设计用的软件
  • 手机电子商务网站建设问卷调查wordpress内链 非插件
  • 重庆智能网站建设企业图书购物网站开发的业务分析
  • 自己做网站需要主机吗网络域名地址
  • 建设网站加推广十六局集团门户网
  • 如何建设类似大众点评网站做网站设计要多少钱
  • 网站制作合同模板上海谷歌seo公司
  • 兰州市建设局官方网站网站为什么要icp备案
  • 上海建设网站便宜的产品开发流程图模板
  • 优秀定制网站建设案例网站排名不可有利就前
  • 四川建设学网官方网站登录在线网站排名工具
  • Asp做网站前期准备搭建网站怎么赚钱
  • 个人备案后可以做电影网站吗网络宣传的方法渠道
  • 做淘宝详情页好的网站如何将wordpress上传到站点
  • 云阳营销型网站建设最简单的做网站的工具
  • 网站的登录注册页面怎么做公司做网站需要准备什么