Time of Update: 2018-12-03
Item 20: 用 pass-by-reference-to-const(傳 const 引用)取代 pass-by-value(傳值)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/預設情況下,C++ 以 by value(傳值)方式將 objects 傳入或傳出函數(這是一個從 C 繼承來的特性)。除非你特別指定其它方式,否則 function parameters(
Time of Update: 2018-12-03
Item 17: 在 standalone statements(獨立語句)中將 new 出來的 objects(對象)存入 smart pointers(智能指標)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/假設我們有一個函數用於取得我們的 processing priority(處理優先順序),還有第二個函數用於根據 priority(優先順序)對一個
Time of Update: 2018-12-03
Item 10: 讓 assignment operators(賦值運算子)返回一個 reference to *this(引向 *this 的引用)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/關於 assignments(賦值)的一件有意思的事情是你可以把它們穿成一串:int x, y, z;x = y = z = 15;
Time of Update: 2018-12-03
(點擊此處,接上篇)但是也許你注意到無論是 on-the-stack(在棧上)的還是 on-the-heap(在堆上)的方法,為了從 operator* 返回的每一個結果都不得不容忍一次 constructor(建構函式)的調用。也許你還記得我們最初的目標是避免這樣的 constructor(建構函式)調用。也許你認為你知道一種方法能避免除一次以外的幾乎全部的 constructor(建構函式)調用。也許下面這個實現是你做過的,一個基於返回一個引向定義在函數內部的 static
Time of Update: 2018-12-03
Item 12: 拷貝一個 object(對象)的所有 parts(構件)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/在設計良好的 object-oriented systems(物件導向系統)中,封裝了 object(對象)的內部構件,只有兩個拷貝 objects(對象)的函數:被恰當地稱為 copy constructor(拷貝建構函式)和 copy
Time of Update: 2018-12-03
Item 5: 瞭解 C++ 為你偷偷地加上和調用了什麼函數作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/一個 empty class(空類)什麼時候將不再是 empty class(空類)?答案是當 C++ 搞定了它。如果你自己不聲明一個 copy constructor(拷貝建構函式),一個 copy assignment operator(拷貝賦值運算子)和一個
Time of Update: 2018-12-03
Chapter 4. Designs(設計)和 Declarations(聲明)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/軟體設計——使軟體能做你想讓它做的事情的途徑——典型情況下,從一個相當概括的想法開始,但是最終它們會變得詳細,詳細到足以進行具體的 interfaces(介面)的開發。這些 interfaces(介面)很可能在隨後被轉化為 C++
Time of Update: 2018-12-03
Item 18: 使 interfaces(介面)易於正確使用,而難以錯誤使用作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/C++ 被淹沒於 interfaces(介面)中。function interfaces(函數介面)、class interfaces(類介面)、template interfaces(模板介面)。每一個
Time of Update: 2018-12-03
這幾日接接觸SystemC,有些感觸:1. SystemC 是一套C++ Class Library,將C++擴充成了一門硬體描述語言(HDL)。我感覺,學習SystemC至少要懂兩樣東西:C++、一門硬體描述語言。我熟悉C++,並且熟悉Verilog,因此學SystemC能舉一反三、觸類旁通。2. SystemC 使用了C++的很多特性:多重繼承、虛擬繼承、模板、RTTI (at least for dynamic_cast)、異常處理、操作符重載。似乎沒有使用STL。3. SystemC
Time of Update: 2018-12-03
(點擊此處,接上篇)一個可替換方案是讓 SquareMatrixBase 儲存一個指向矩陣的值的記憶體地區的指標。而且一旦它儲存了這個指標,它同樣也可以儲存矩陣大小。最後得到的設計大致就像這樣:template<typename T>class SquareMatrixBase {protected: SquareMatrixBase(std::size_t n, T *pMem) // store matrix size and a : size(n),
Time of Update: 2018-12-03
Chapter 2. Constructors(建構函式),Destructors(解構函式)與 Assignment Operators(賦值運算子)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/幾乎每一個你自己寫的 class(類)都會有一個或多個 constructors(建構函式),一個 destructor(解構函式)和一個 copy assignment
Time of Update: 2018-12-03
Item 19: 視 class design(類設計)為 type design(類型設計)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/在 C++ 中,就像其它 object-oriented programming languages(物件導向程式設計語言),通過定義一個新 class(類)來定義一個新 type(類型)。作為一個 C++
Time of Update: 2018-12-03
恩,做了個俄羅斯方塊的遊戲!用Visio做介面顯示,C#程式。 左右鍵控制移動,上鍵控制旋轉,空格放下。耗時3小時完成. 感覺C# 進行visio編程基本上學的差不多了吧..木哈哈。 -------------------------又及,補充一下,就是用C#開啟一個Visio,然後操縱Visio畫出俄羅斯方塊來,並且根據鍵盤控制操縱這個俄羅斯方塊移動,旋轉,下降和消除。
Time of Update: 2018-12-03
集12個main為一身的C程式竟然也能運行,而且可移植性為100% 作者:張桂權 這樣的程式竟然也能運行,不是一個工程只能包含一個main嗎? 沒想到吧 ! 什麼事情都有可能發生,而且這樣的事情還多著呢? 如果你只是被它的結構迷惑,那沒關係,不過…… 程式的運行結果可能會讓你更加吃驚了…… 結果是什嗎?編譯運行一下你就知道了。 這不得不讓我想起“The Tao of Programming”中的一句話“編程大師的程式再淩亂,也用不著測試,因為它是正確的”。
Time of Update: 2018-12-03
(翻譯的太差了)一、文法細節C++不允許修改內建類型的臨時變數預設參數根據靜態類型獲得重載的new和delete操作符永遠都是靜態,不管你聲明static沒有二、慣用法選擇前置遞增,只有打算使用初始值時才使用後置遞增,並且使用前置遞增來實現後置遞增注意由隱式轉換建立的隱藏臨時對象;避免這個問題的好辦法,是使用explicit建構函式,避免編寫轉換操作符永遠不要#include不必要的標頭檔;當前置聲明足夠時,永遠不要#include標頭檔明智的使用名稱空間:如果將一個類放入一個名字空間內,那麼一
Time of Update: 2018-12-03
Item 4: 確保 objects(對象)在使用前被初始化作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/C++ 看上去在對象的值的初始化方面變化莫測。例如,如果你這樣做,int x;在某些情形下,x 會被初始化(為 0),但是在其它情形下,也可能沒有。如果你這樣做,class Point { int x, y;};...Point p;p 的 data
Time of Update: 2018-12-03
期待C++的ABI轉型(cast)其實是一種編譯器指令,大部分情況下它並不改變一個指標所含的真正地址,它隻影響“被指出之記憶體的大小和其內容”的解釋方式;那麼,什麼情況下轉型會導致指標的值發生變化呢?多重繼承時轉向不同基類?Global Objects的記憶體保證會在程式啟用的時候被清0;Local Objects配置於棧中,heap
Time of Update: 2018-12-03
(點擊此處,接上篇)iterator_traits 通過兩部分實現這一點。首先,它強制要求任何 user-defined iterator(使用者定義迭代器)類型必須包含一個名為 iterator_category 的嵌套 typedef 用以識別適合的 tag struct(標籤結構體)。例如,deque 的 iterators(迭代器)是隨機訪問的,所以一個 deque iterators 的 class 看起來就像這樣:template < ... >
Time of Update: 2018-12-03
Item 24: 當希望將 type conversions(類型轉換)應用於所有 parameters(參數)時,請聲明為 non-member functions(非成員函數)作者:Scott Meyers 譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/在本書的 Introduction(導言)中我談到讓 classes 支援 implicit type
Time of Update: 2018-12-03
Item 47: 為類型資訊使用 traits classes(特徵類)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/STL 主要是由 containers(容器),iterators(迭代器)和 algorithms(演算法)的 templates(模板)構成的,但是也有幾個 utility templates(工具模板)。其中一個被稱為