Time of Update: 2018-12-03
Item 49: 瞭解 new-handler 的行為作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/當 operator new 不能滿足一個記憶體配置請求時,它拋出一個 exception(異常)。很久以前,他返回一個 null pointer(null 指標),而一些比較老的編譯器還在這樣做。你依然能得到以前的行為(在一定程度上),但是我要到這個 Item
Time of Update: 2018-12-03
windows平台上編譯64位程式變數類型大小變化:類型 用32位編譯的大小 用64位編譯的大小char 1 1short 2 2int 4 4long 4
Time of Update: 2018-12-03
有時候我們在寫伺服器端的程式的時候,經常需要用到日誌,這幾天在做些事情的時候,發現居然還沒有我自己經常使用的一個日誌類,正好現在又找到一個非常不錯的日誌類,所以把他記錄下來,留待以後直接拿來用就可以了:Log.h////////////////////////////////////////////////////////////////////////#if !defined(__TEST_LOG__INCLUDED_)#define __TEST_LOG__INCLUDED_#if
Time of Update: 2018-12-03
可以把這本書重新命名為<<C++設計模式>>,也可以重新命名為<<C++編程思想>>,甚至還可以叫它<<C++語言的設計和演化>>,總之,Koening談到了以上所有方面,並且首先是編程思想和設計原則,其次才是C++,而其與Bjarne
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
(點擊此處,接上篇)當 object references(引用)和 pointers(指標)可以做到時就避免使用 objects。僅需一個類型的聲明,你就可以定義到這個類型的 references 和 pointers。而定義一個類型的 objects 必須要存在這個類型的定義。 只要你能做到,就用對 class declarations(類聲明)的依賴替代對 class definitions(類定義)的依賴。注意在你聲明一個使用一個 class 的函數時絕對不需要有這個 class
Time of Update: 2018-12-03
期待C++的ABI轉型(cast)其實是一種編譯器指令,大部分情況下它並不改變一個指標所含的真正地址,它隻影響“被指出之記憶體的大小和其內容”的解釋方式;那麼,什麼情況下轉型會導致指標的值發生變化呢?多重繼承時轉向不同基類?Global Objects的記憶體保證會在程式啟用的時候被清0;Local Objects配置於棧中,heap
Time of Update: 2018-12-03
The Ten Commandments for C Programmers(Annotated Edition)by Henry Spencer1Thou shalt run lint frequently and study its pronouncements with care, for verily its perception and judgement oft exceed thine.This is still wise counsel, although many
Time of Update: 2018-12-03
Item 1: 將 C++ 視為 federation of languages(語言聯合體)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/最初,C++ 僅僅是在 C 的基礎上附加了一些 object-oriented(物件導向)的特性。C++ 最初的名稱—— "C with Classes" 就非常直觀地表現了這一點。作為一個語言的成熟過程,C++
Time of Update: 2018-12-03
Item 2: 用 consts, enums 和 inlines 取代 #defines作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/這個 Item 改名為“用 compiler(編譯器)取代 preprocessor(前置處理器)”也許更好一些,因為 #define 根本就沒有被看作是語言本身的一部分。這是它很多問題中的一個。當你像下面這樣做:#define
Time of Update: 2018-12-03
Item 39: 謹慎使用 private inheritance(私人繼承)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/Item 32 論述了 C++ 將 public inheritance(公有繼承)視為一個 is-a 關係。當給定一個 hierarchy(繼承體系),其中有一個 class Student 從一個 class Person
Time of Update: 2018-12-03
Item 13: 使用 objects(對象)管理資源作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/假設我們和一個類比投資(例如,股票,債券等)的庫一起工作,各種各樣的投資形式從一個 root class(根類)Investment 繼承出來:class Investment { ... }; // root class of hierarchy
Time of Update: 2018-12-03
目錄結構記憶體池簡介 介紹分析記憶體池改進及所使用技術 如何配合STL容器 效能測試 如何使用 記憶體池簡介:關於記憶體池的介紹,好文很多(這裡,這裡,這裡,還有這裡…)。在如今的PC機器上,記憶體池的作用也沒有那麼明顯了,作業系統對記憶體的管理已經相當不錯。但,為什麼還需要記憶體池呢?兩點:1. 減少記憶體管理負擔,提升效能。(比如,在進行密集型演算法前申請足夠記憶體記憶體,然後使用,最後統一釋放) 2.減少分頁錯誤(分頁錯誤是由虛擬記憶體與實體記憶體交換導致的),減少記憶體片段,提高效能。
Time of Update: 2018-12-03
簡介:什麼是序列化?簡單來說,序列化就是將對象執行個體的狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是還原序列化,它根據流重構對象。這兩個過程結合起來,可以輕鬆地儲存和傳輸資料。對象序列化還原序列化通常用於:1. 將Object Storage Service於硬碟上2.
Time of Update: 2018-12-03
接下來是第六章的一道習題,要求實現一個binary_tree_inserter,以使用mpl::copy演算法從其它序列產生一棵二分尋找樹(Binary Search Tree,即滿足以下條件的一種二分樹:左子樹所有元素小於根,右子樹所有元素大於根,且左右子樹全都是二分尋找樹)。習題中給出的測試代碼如下:typedef mpl::copy< mpl::vector_c<int,17,25,10,2,11> , binary_tree_inserter<
Time of Update: 2018-12-03
Item 52: 如果編寫了 placement new,就要編寫 placement delete作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/在 C++ 動物園中,placement new 和 placement delete 並不是最常遇到的野獸,所以如果你和它們不熟也不必擔心。作為替代,回想一下 Items 16 和 17,當你寫下一個這樣的 new
Time of Update: 2018-12-03
shared_ptr標頭檔:
Time of Update: 2018-12-03
位元運算 位元運算的運算分量只能是整型或字元型資料,位元運算把運算對象看作是由二進位組成的位串資訊,按位完成指定的運算,得到位串資訊的結果。位元運算符有: &(按位與)、|(按位或)、^(按位異或)、~ (按位取反)。 其中,按位取反運算子是單目運算子,其餘均為雙目運算子。 位元運算符的優先順序從高到低,依次為~、&、^、|, 其中~的結合方向自右至左,且優先順序高於算術運算子,其餘運算子的結合方向都是自左至右,且優先順序低於關係運算子。 (1)
Time of Update: 2018-12-03
有兩個簡單法,其一:不讓用TryParse,那自寫一個唄:using System;class test{static void Main(){string s1=Console.ReadLine();int i;if(myTryParse(s1,out i)){Console.WriteLine("成功:"+i);}else{Console.WriteLine("失敗:請輸入數字!");}}static bool myTryParse(string s,out int i){try{int