构造函数中的成员初始化的执行效率
来源:互联网 发布:中国象棋ai算法 html5 编辑:程序博客网 时间:2024/05/18 00:34
以前的惯用的构造函数的写法
class People{ private: string name; int age; public: People(string name, int age) { this->name = name; this->age = age; }};
呵呵,没有错误哇,挺好的,可是执行效率下降了许多。最新发现,以上的成员变量的初始化 全是采用的赋值初始化,程序的构造函数有一个default构造函数,自动调用的,问题来了,在进入构造函数体内就自动的调用了这个。
构造函数的写法最好成员初始列这样:
People(string name, int age):name(name), age(age)
{
}
最好这样初始化了,不过也得看情况而定啦,这里调用了拷贝构造函数,如果相应的这个函数如果抛出异常了,那在构造这个新的类的够着函数时问题就复杂了。不过一般这样写没问题。
拷贝构造,赋值构造都得视情况而定!
===================================================================================================================================
嗯,另一个问题,如何保证一个对象调用另外一个对象的时候,该对象是否被初始化了,专业说法是 如何免除“跨编译单元的初始化次序”问题,这里提到了一种采用local static 对象替换 non-local static对象。
FileSystem &tfs()
{
static FileSystem fs;
return fs;
}
如果此时调用这个函数,就不用担心是否要把这个进行初始化了。因为函数内的local static 对象会在 该函数被调用期间 首次遇上对象的定义式 时被初始化。
- 构造函数中的成员初始化的执行效率
- C++成员变量的初始化顺序如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。
- 构造函数初始化、static代码块初始化、成员变量初始化、以及在子父类中混合的执行顺序实例
- 构造函数的成员初始化参数表
- 构造函数的成员初始化列表
- (静态)初始化块、成员变量、构造函数执行顺序
- AS3 类成员变量的初始化和构造函数的执行 谁先谁后?
- C#类成员变量初始化与构造函数执行的顺序
- 必须在构造函数的成员初始化列表里初始化
- 成员初始化列表和构造函数体初始化的区别
- c++ 构造函数初始化的执行次序
- 成员初始化列表和构造函数体中的区别
- 成员初始化列表和构造函数体中的区别
- 成员初始化列表和构造函数体中的区别
- 成员初始化列表和构造函数体中的区别
- 成员初始化列表和构造函数体中的区别
- 构造函数中初始化成员
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- 一生何求
- 第11章 GUI 03 布局管理器1
- infa客户端连接服务端配置ip
- 需求调研步骤和方法
- 处理sqlite中sql语句中的转义词
- 构造函数中的成员初始化的执行效率
- mysql管理shell
- 逐步设置vim C/C++语法高亮显示和自动缩进
- PC安卓模拟器PANIC: Could not open:C:\Documents and Settings\Administrator\.android/avd/my_avd.ini解决方案 .
- 在装dg环境时运用到了scp命令
- javascripte发送请求
- ACTIVE日志损坏(有归档)
- 用VBScript读写INI配置文件(比较不错的代码)http://www.robvanderwoude.com/vbstech_files_ini.php
- C/C++中static关键字详解