C++ 初始化列表初始化列表性能问题的简单的探索
生活随笔
收集整理的這篇文章主要介紹了
C++ 初始化列表初始化列表性能问题的简单的探索
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++ 初始化列表性能問題的簡單的探索
從概念上來講,構造函數的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先于計算階段。
在執行構造函數時,如果沒有給定初始值,那系統就會自動進行初始化。
#include <stdlib.h> #include <iostream> #include <string>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 <stdlib.h> #include <iostream> #include <string> #include <time.h> #include <Windows.h>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 <stdlib.h> #include <iostream> #include <string> #include <time.h> #include <Windows.h>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
總結
以上是生活随笔為你收集整理的C++ 初始化列表初始化列表性能问题的简单的探索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你所不了解的五条面试忠告
- 下一篇: C++ Websites