Time of Update: 2018-12-03
下面對於C++中方法中參數聲明以及定義中的參數賦值為0調用問題,在實際的工作中遇到,便進行了相關的示範處理。如下查看紅色部分的差異。/////////////////////////////////////////////////////////#include <iostream>using namespace std;class T1{public: T1(){} virtual ~T1 () {}public:
Time of Update: 2018-12-03
在研究函數指標時發現一些問題,貼出來與大家共用。例如定義個函數指標://定義指標void (*pFunc)();//執行個體一個無參函數void printing(){//do something}pFunc =
Time of Update: 2018-12-03
1. _cdecl (1). 是C Declaration的縮寫,表示C語言預設的函數調用方法,實際上也是C++的預設的函數調用方法。 (2). 所有參數從右至左依次入棧,這些參數由調用者清除,稱為手動清棧。具體所示:調用方的函數調用->被調用函數的執行->被調用函數的結果返回->調用方清除調整堆棧。 (3).
Time of Update: 2018-12-03
以前在學習資料結構的時候一直沒弄懂函數參數裡面傳遞 ** p 以及使用 &的含義,這裡摘抄了一小段文章方便理解。不懂的時候再看看這幾段代碼。指標參數是如何傳遞記憶體的? 如果函數的參數是一個指標,不要指望用該指標去申請動態記憶體。見如下例子:void GetMemory(char *ip, int num){ ip = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str =
Time of Update: 2018-12-03
1.非引用形參包括普通對象形參和指標對象形參這類形參都是在調用函數時,在棧中臨時分配一個局部副本,然後初始化,即複製實參傳遞的資料。調用函數並沒有訪問實參傳遞值本身,也因此不會修改實參傳遞的數值,即函數對這類形參所做的操作和改動僅僅是改變了局部副本的值,不會影響到實參傳遞的資料本身。非引用形參表示對應實參的局部副本,同時也意味著都需要開銷,不同的是指標形參所花的時間開銷和儲存開銷基本是固定而且很小,而普通非指標對象的開銷則需要根據對象具體大小來定。一旦函數執行結束,這些局部變數的值也就沒有了。注
Time of Update: 2018-12-03
轉:http://www.xxlinux.com/linux/dev/c/2007-10-05/10060.html自己比較懶,網上找到不錯的總結,其實我只學習了c代碼的部分。在編程的過程中,檔案的操作是一個經常用到的問題,在C++Builder中,可以使用多種方法對檔案操作,下面我就按以下幾個部分對此作詳細介紹,就是:1、基於C的檔案操作;2、基於C++的檔案操作;3、基於WINAPI的檔案操作;4、基於BCB庫的檔案操作;5、特殊檔案的操作。這次我首先寫出第一篇,以後我會陸續寫出其它部分在我
Time of Update: 2018-12-03
一.C語言基礎資料型別 (Elementary Data Type): c語言中 char, int, float, double, signed, unsigned, long, short and void// java 中的8大本資料類型和他們的長度 // byte 1 char 2 short 2 int 4 long 8 double 8 float 4 boolean 1// 在c99標準的c語言.沒有 byte 類型 沒有boolean 類型// 在c語言裡面 0表示的是假
Time of Update: 2018-12-03
Item 28: 避免返回 object 內部構件的 "handles"(“控制代碼”)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/假設你正在一個與矩形有關的應用程式上工作。每一個矩形都可以用它的左上方和右下角表示出來。為了將一個 Rectangle object 保持在較小狀態,你可能決定定義 Rectangle 地區的那些點不應該儲存在 Rectangle
Time of Update: 2018-12-03
Google 開源了很多優秀的 C++ 程式庫,本文介紹如何將其中幾個整合到一起。本文涉及的 Google 庫有:gflags - 命令列參數解析。可以完全用命令列來配置應用程式,省去設定檔。 gtest - C++ 單元測試架構 gmock - C++ 單元測試中用到的 mock glog - 日誌庫 protobuf - 高效的網路通訊協定格式 還有第三方的 libunwind 和
Time of Update: 2018-12-03
(點擊此處,接上篇)在深入探究 dynamic_cast 的設計意圖之前,值得留意的是多數 dynamic_cast 的實現都相當慢。例如,至少有一種通用的實現部分地基於對 class names(類名)進行 string comparisons(字串比較)。如果你在位於一個 single-inheritance hierarchy(單繼承體系)四層深處的一個 object 上執行 dynamic_cast,在這樣一個實現下的每一個 dynamic_cast 都要付出相當於四次調用
Time of Update: 2018-12-03
Chapter 6. Inheritance(繼承)和 Object-Oriented Design(物件導向設計)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/Object-oriented programming (OOP) 已經流行了差不多 20 年,所以,你很可能對 inheritance(繼承),derivation(派生)和 virtual
Time of Update: 2018-12-03
Item 41: 理解 implicit interfaces(隱式介面)和 compile-time polymorphism(編譯期多態)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/Object-Oriented Programming(物件導向編程)的世界是圍繞著 explicit interfaces(顯式介面)和 runtime
Time of Update: 2018-12-03
Item 33: 避免覆蓋(hiding)“通過繼承得到的名字”作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/莎士比亞有一個關於名字的說法。"What's in a name?" 他問道,"A rose by any other name would smell as
Time of Update: 2018-12-03
(點擊此處,接上篇)你能說出其中的區別嗎?從錯誤被發覺時間方面看。“企鵝不能飛”的禁令可以由編譯器強令執行,但是對“讓企鵝真的去飛是一個錯誤”的規約的違反,只有在運行時才能被發覺。為了表達“企鵝不能飛”這個限制,你要確保不要為 Penguin 對象定義這樣的函數:class Bird { ... // no fly function is declared};class Penguin: public Bird { ...
Time of Update: 2018-12-03
Item 32: 確保 public inheritance 類比 "is-a"作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/在 Some Must Watch While Some Must Sleep (W. H. Freeman and Company, 1974) 這本書中,William Dement
Time of Update: 2018-12-03
Item 27: 最少化 casting(強制轉型) 作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/C++ 的規則被設計為保證不會發生類型錯誤。在理論上,如果你的程式想順利地通過編譯,它就不應該試圖針對任何 objects 做任何不安全的或無意義的操作。這是一個非常有價值的保證,你不應該輕易地放棄它。不幸的是,casts(強制轉型)攪亂了 type
Time of Update: 2018-12-03
Item 38: 通過 composition(複合)類比 "has-a"(有一個)或 "is-implemented-in-terms-of"(是根據……實現的)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/composition(複合)是在 objects of one type(一個類型的對象)包含 objects of another type(另一個類型的對象)
Time of Update: 2018-12-03
(點擊此處,接上篇)現在,假設 XYZ 公司的財富增長了,決定引進一種新機型,Model C。Model C 在某些方面與 Model A 和 Model B 不同。特別是,它的飛行不同。XYZ 公司的程式員在 hierarchy(繼承體系)中增加了 Model C 的 class,但是由於他們匆匆忙忙地讓新的機型投入服務,他們忘記了重定義 fly function:class ModelC: public Airplane { ...
Time of Update: 2018-12-03
Item 26: 只要有可能就延遲 variable definitions(變數定義)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/只要你定義了一個帶有 constructor(建構函式)或
Time of Update: 2018-12-03
Item 35: 考慮可選的 virtual functions(虛擬函數)的替代方法作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/現在你工作在一個視頻遊戲上,你在遊戲中為角色設計了一個 hierarchy(繼承體系)。你的遊戲中有著變化多端的惡劣環境,角色被傷害或者其它的健康狀態降低的情況並不罕見。因此你決定提供一個 member