原创 Item 4: 知道怎麼去看推導的類型

本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 博客已經遷移到這裏啦 對於推導類型結果的查看,根據不同的軟件開發階段,你想知道的信息的不同,可以選擇不同的工具

原创 Item 5: 比起顯式的類型聲明,更偏愛auto

本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 啊,簡單愉快的代碼: inr x; 等等,討厭!我忘了初始化x,所以它的值是不確定的。可能,它可能被初始化成

原创 QT 遇到的問題

遇到的問題: 1:在QT中使用opengl,發現一個很神奇的問題,個人感覺是qt的bug。 問題詳情:在我添加了一個成員變量之後,使用opengl編寫的窗口沒有任何輸出了,只有一個背景。 但是刪除那個成員變量後,窗

原创 對象模型如何影響程序

先看一下一個簡單的函數: X foobar() { X xx; X *px = new X; xx.foo(); delete px; return x; } 編譯器做出的一些轉換: voi

原创 c++對象模型-對象模型

1:簡單對象模型 1>介紹:每個成員都使用一個指針指向真正的成員。所以對象 的大小很好確定,就是成員數*指針大小。 2>用途:成員函數就是使用這個模型的 3>圖: 4>加上繼承:每

原创 Item 6: 當auto推導出一個不想要的類型時,使用顯式類型初始化的語法

本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 博客已經遷移到這裏啦 Item 5解釋了比起顯式指定類型,使用auto來聲明變量提供了大量技術上的優點,但是有

原创 如何寫一個好的測試

博客原文地址 背景 在上一個項目上,由於項目成員大部分是新入職的同事,所以對於測試不是很熟悉, 這就導致了在項目前期,項目上的很多測試都不太make sense,雖然沒有什麼定量的東西來描述, 但是總結起來就2個點: 測試的名字

原创 Item 7:當創建對象的時候,區分()和{}的使用

本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 博客已經遷移到這裏啦 從不同的角度來看,在C++11中,對象初始化擁有多種語法選擇,這體現了語法豐富造成的尷尬

原创 Item 11: 比起private undefined function優先使用deleted function

本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 博客已經遷移到這裏啦 如果你爲其他開發者提供代碼,並且你想阻止他們調用一個特定的函數,你通常不會聲明這個函數。

原创 Item 10: 比起unscoped enum更偏愛scoped enum

本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 博客已經遷移到這裏啦 一般情況下,在花括號中聲明一個name(包括變量名,函數名),這個name的可見性會被限

原创 Item 8: 比起0和NULL更偏愛nullptr

本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 博客已經遷移到這裏啦 先讓我們看一些概念:字面上的0是一個int,不是一個指針。如果C++發現0在上下文中只能

原创 Item 3: 理解decltype

本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 博客已經遷移到這裏啦 decltype是一個奇怪的東西。給出一個名字或者一個表達式,decltype可以告訴你

原创 default construction

4種情況下編譯器會構造出nontrivial(有用)的構造函數 帶有default construction的member class object 我們有兩個class: class Foo { public:

原创 QT 小總結

遇到的問題: 1:在debug模式下可以順利執行,但是換到release模式下沒法執行了。會顯示 exited with code 1 。 解決辦法:把產生的release文件放到QT的bin庫下,看是否能執行,如果能執行,那麼說

原创 copy constructor

copy constructor也分爲trivial和nontrivial兩種 如果class展現出bitwise copy semantics(按位拷貝語義),則不會構造出 copy constructor。 反之,會構造