博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 初始化列表初始化列表性能问题的简单的探索
阅读量:5127 次
发布时间:2019-06-13

本文共 1958 字,大约阅读时间需要 6 分钟。

C++ 初始化列表性能问题的简单的探索


从概念上来讲,构造函数的执行可以分成两个阶段,初始化阶段和计算阶段,初始化阶段先于计算阶段

在执行构造函数时,如果没有给定初始值,那系统就会自动进行初始化。

#include 
#include
#include
class myclass{public: int num_i; float num_f; double num_d; char chr; std::string str;};int main(){ myclass test; std::cout << test.chr << std::endl; std::cout << test.str << std::endl; std::cout << test.num_i << std::endl; std::cout << test.num_f << std::endl; std::cout << test.num_d << std::endl; system("pause");}


初始化列表是在初始化阶段对成员变量进行复制,因此使用初始化列表比构造函数更加快速。

可以通过比较使用初始化列表和不适用初始化列表的构造函数的执行时间来进行测试。

 

不使用初始化列表:

#include 
#include
#include
#include
#include
class myclass{public: myclass(std::string *str) { mystr = new std::string[1000]; mystr = str; }private: std::string *mystr;};int main(){ time_t start,end; std::string *str = new std::string[1000]; for (int i = 0; i < 1000; i++) str[i] = "hello"; start = clock(); myclass n_class(str); end = clock(); std::cout << "函数执行时间:" <<(end - start)*1000/CLOCKS_PER_SEC;//精确到毫秒 std::cout << "\n"; system("pause");}

使用初始化列表:

#include 
#include
#include
#include
#include
class myclass{public: myclass(std::string *str) :mystr(new std::string[1000]) { mystr = str; }private: std::string *mystr;};int main(){ time_t start,end; std::string *str = new std::string[1000]; for (int i = 0; i < 1000; i++) str[i] = "hello"; start = clock(); myclass n_class(str); end = clock(); std::cout << "函数执行时间:" <<(end - start)*1000/CLOCKS_PER_SEC;//精确到毫秒 std::cout << "\n"; system("pause");}

由执行的结果可以看出,在使用初始化列表函数执行的更加快速。

 

转载于:https://www.cnblogs.com/QingKeZhiXia/p/7126361.html

你可能感兴趣的文章
学习进度六
查看>>
Spring Boot干货系列:(七)默认日志logback配置解析
查看>>
PHP - 判断php是否对表单数据内的特殊字符自动转义
查看>>
简易商城 [ html + css ] 练习
查看>>
Linux 下Makefile教程
查看>>
[转]MSP430另一种UART实现
查看>>
myeclipse部署多个web工程
查看>>
tcp_协议基础
查看>>
layui弹窗 之 iframe关闭
查看>>
【BZOJ2565】最长双回文串 Manacher
查看>>
There is no PasswordEncoder mapped for the id "null"
查看>>
windows10 conda python多版本切换
查看>>
Linux配置日志服务器
查看>>
P6 EPPM 16.1 安装和配置指南 1
查看>>
C语言:九九乘法表打印
查看>>
Java_Activiti5_菜鸟也来学Activiti5工作流_之JUnit单元测试(四)
查看>>
codeforce626D (概率)
查看>>
HD1385Minimum Transport Cost(Floyd + 输出路径)
查看>>
Ajax技术
查看>>
MVC解决方案发布IIS 登录页面需要输入两次帐号问题
查看>>