首页 > 其他分享 >条款04: 确定对象被使用前已被初始化

条款04: 确定对象被使用前已被初始化

时间:2024-09-07 20:46:43浏览次数:9  
标签:std 初始化 const string 04 Directory class 条款

1. 对象使用之前进行初始化

void Test00()
{
    int x = 0;
    const char* text = "A C-style string";
    double d;
    std::cin >> d;
}

1. 使用初始化列表进行初始化
2. baseClass的初始化早于derivedClass
3. class的成员变量总是以声明的顺序进行初始化,而不是在成员初值列中的顺序

class PhoneNumber
{};

class ABEntry
{
public:
    ABEntry() :
        theName(), theAddress(), thePhones(), numTimesConsulted(0)
    {}
    ABEntry(const std::string& name, const std::string& address, const std::list<PhoneNumber>& phones) :
        theName(name), theAddress(address), thePhones(phones),numTimesConsulted(0)
    {}
private:
    std::string theName;
    std::string theAddress;
    std::list<PhoneNumber> thePhones;
    int numTimesConsulted;
};

1. 初始化次序的重要性,tfs在tempDir之前先被初始化,否则tempDir的构造函数会用到尚未初始化的tfs
2. 定义并初始化一个local static对象,以免除"跨编译单元之初始化次序"

class FileSystem
{
public:
    size_t numDisks()
    {
        return 1u;
    }
};
FileSystem& tfs()
{
    static FileSystem fs;
    return fs;
}

class Directory
{
public:
    Directory()
    {
        std::size_t disks = tfs().numDisks();
    }
};

Directory& tempDir()
{
    static Directory td;
    return td;
}

 

标签:std,初始化,const,string,04,Directory,class,条款
From: https://www.cnblogs.com/BoYuCG/p/18402129

相关文章

  • Ubuntu 22.04 镜像源
    #aliyundebhttp://mirrors.aliyun.com/ubuntu/lunarmainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/lunarmainrestricteduniversemultiversedebhttp://mirrors.aliyun.com/ubuntu/lunar-securitymainrestricteduniversemultive......
  • 洛谷 P4829 kry loves 2048——题解
    洛谷P4829题解传送锚点摸鱼环节kryloves2048题目背景kls是一个人赢。题目描述kls最近在玩一款类似2048的游戏,规则是这样的:一开始,有\(n\)个方块,每个方块上有一个\(1\)到\(m\)的整数。kls可以进行两种操作:选择两个数字相同的方块(不一定要相邻),将它们合并成一个数字为......
  • Dotnetty学习笔记——自定义初始化处理器
    常常我们需要开一个服务单,对接不同的客户端,编码器、解码器等都不同,需要针对不同IP添加不同的处理器。publicclassCustomInitializer:Channellnitializer<lSocketChannel>{Action<string,string>_dealMsgAction;lServer_server;publicCustomInitializer(Action<st......
  • Linux命令分享 三 (ubuntu 16.04)
    1、‘>’'>>'输出重定向用法:命令参数>文件ls>a.txt‘>’将一个命令的结果不输出到屏幕上,输出到文件中,如果文件不存在就创建文件,如果存在就覆盖文件。ls>>a.txt‘>>’如果文件不存在就创建文件,如果存在就追加在文件后面。2、echo回显字符你在echo后面输入......
  • 条款03: 尽可能使用const
    1.在classes外部修饰global或namespace作用域内的常量,或修饰文件、函数、或区块作用域中被声明为static的对象2.修饰classes内部的static和non-static成员变量3.可以指出指针自身、指针所指之物,或两者都不是,都是constchargreeting[]="Hello";char*constp00=greeting;......
  • 04-burp对http网站抓包&漏洞利用及信息收集
    1、安装burp并实现抓取HTTP站点的数据包(HTTPS站点暂时不要求)首先用docker开启dvwa容器,创建出一个http的站点(dvwa)dockerrun-d-p8080:80sagikazarmark/dvwa然后在网络设置中,将配置访问互联网的代理服务器中的选项改为手动配置代理(以Firefox为例),其中HTTP代理的IP地址和......
  • 条款02: 尽量以const,enum,inline 替换 #define
    宏实现1.宏定义有可能从未被编译器看到,找不到宏定义2.宏有可能存在多份#defineASPECT_RATIO1.6531.宏实现函数,必须为宏中所有实参加上(),即使加上也会有被多次调用template<typenameT>inlinevoidprint(Tdata){ std::cout<<data<<std::endl;}#define......
  • Why I‘m getting 404 Resource Not Found to my newly Azure OpenAI deployment?
    题意:为什么我新部署的AzureOpenAI服务会出现404资源未找到的错误?问题背景:I'vegonethroughthis quickstart andIcreatedmyAzureOpenAIresource+createdamodeldeploymentwhichisinstatesucceedded.Ialsoplayarounditin AzureOpenAIStudio-Mi......
  • 计算机毕业设计必看必学!! 09040 Springboot智能购房推荐系统,原创定制程序, java、PHP
    摘 要近年来随着我国经济的高速发展,房地产业也随之蓬勃发展,尤其是最近国家新出台的房改政策。鼓励居民购房,这对房产公司无疑是一个极好的发展势头。尤为重要的是,近几年随着信息技术和电子商务的快速发展,许多企业都开发了自己房产信息软件。智能购房推荐系统主要针对房屋......
  • 【YashanDB知识库】修改字段长度后,jdbc驱动接口报YAS-04007 Message:result set metada
    问题现象yashandb修改表的字段长度后,客户的业务接口报YAS-04007异常,截图如下:问题的风险及影响客户的业务在访问yashandb时异常出错,影响使用问题影响的版本所有的yashandb版本问题发生原因使用jdbc接口获取PreparedStatement以后,修改表的字段长度,再用前面获取的PreparedStatement继......