Time of Update: 2018-12-04
c語言不支援函數重載,如果定義兩個同樣的函數,會報錯。eg://test.c#include <stdio.h>#include <stdlib.h>int add(int a,int b){ return a+b;}int add(int a,int b,int c){ return a+b+c;}int main(int argc,char * argv[]){ if(argc!=3 && argc != 4) {
Time of Update: 2018-12-04
衍生類別與繼承保護成員可以被衍生類別的成員函數訪問,但是對於外界是隱藏起來的,外部函數不能訪問它。 建立衍生類別對象時,首先執行基類的建構函式,隨後再執行衍生類別的建構函式;當撤銷衍生類別對象時,則先執行衍生類別的解構函式,隨後再執行基類的解構函式。 當基類含有帶參數的建構函式,衍生類別必須定義建構函式。如果衍生類別的基類也是一個衍生類別,則每個衍生類別只需負責其直接基類的構造,依次上溯。 虛基類解決二義性。如果一個衍生類別是從多個基類派生出來的,而這些基類又有一個共同的基類,則在這個衍生類別中
Time of Update: 2018-12-04
多態性:運算子多載運算子多載通過建立運算子函數operator()來實現。例子:complex operator+(complex a ,complex b){}一般而言,採用成員函數重載雙目運算子+後,可以用以下兩種方法來使用:aa + bb 或者
Time of Update: 2018-12-04
模版 函數模版聲明template<class T>T max(T X,T Y){ return (x>y)?x:y;} 注意:執行個體化T的各模版實參之間必須保持完全一致的類型 模版類定義template<class Type>class stack{void push(Type ch);Type pop();} 類外定義push poptemplate<class Type>void stack<Type>::push(Type ob)
Time of Update: 2018-12-04
結構體變數所佔記憶體長度是各成員占的記憶體長度的總和。每個成員分別佔有其自己的記憶體單元。共用體變數所佔的記憶體長度等於最長的成員長度。 注意點: 1.共用體變數中起作用的成員時最後一次存放的成員,在存入一個新成員後原有的成員就失去作用。 2.不能把共用體變數作為函數參數,也不能使函數帶回共用體變數,但可以使用變數的指標。 枚舉類型:enum weekday{sun,mon,tue,wnd,thu,fri,sat};注意點:
Time of Update: 2018-12-04
文章目錄 關於...的使用錯誤的嵌套-Misnesting由操作符優先順序引起的問題-Operator Precedence Problem消除多餘的分號-Semicolon SwallowingDuplication of Side Effects 轉至
Time of Update: 2018-12-04
計算2進位數中1的個數,主要用到m&(m-1) 交換a,b不用中間變數,用異或:a=a^b;b=a^b;a=a^b sizeof不是函數,它是個類似宏定義的特殊關鍵字,只要是指標,大小就是4. 靜態變數時存放在全域資料區的,而sizeof計算棧中分配的大小,是不會計算在內的。sizeof(虛函數)(類)class no_virtual{public: void fun1() const{} int fun2() const { return a;
Time of Update: 2018-12-04
在討論全域變數之前我們先要明白幾個基本的概念:1. 編譯單元(模組): 在IDE開發工具大行其道的今天,對於編譯的一些概念很多人已經不再清楚了,很多程式員最怕的就是處理串連錯誤(LINK ERROR),
Time of Update: 2018-12-04
char c[] = "hello world" 分配局部數組char* c = "hello world" 分配全域數組 全域地區的值是不能進行修改的 1 常量指標!如 int b, c; int * const a = &b; 表示a是一個常量指標它指向變數b的記憶體。但是因為是常量指標所以不能再用a指向其他變數,如 a = &c; 錯誤!可以修改指向記憶體的值,如:*a = 20; BTW 常量指標聲明的時候必須向我那樣賦初值。 2 指向常量的指標!如 int
Time of Update: 2018-12-04
對於一個空類,編譯器預設產生4個成員函數:預設建構函式、解構函式、拷貝建構函式、賦值函數。 malloc使用時最好帶上記憶體檢測if((h=(stud *)malloc(sizeof(stud)))==NULL)
Time of Update: 2018-12-04
關鍵字 mutable 是一個奇怪的修飾符(specifier),它只能夠用於一個類的非待用資料成員。下面我將討論 mutable 的語義和用法,但是首先我要解釋一下 C++ 物件模型的一個關鍵概念。對象的狀態 一個對象的狀態由其非待用資料成員的值構成,因此,修改一個資料成員將會改變整個對象的狀態。將一個成員函式宣告為 const 能夠保證它不會改變對象的狀態。
Time of Update: 2018-12-04
左移運算大多數情況下可以看成是乘法運算(除去高位溢出的情況),但是顯然比乘法運算快很多。注意點:如果一個位元組長的數64 (01000000)則左移兩位後值變為0 右移運算:移到右端的低位被捨棄,對無符號數,高位補0. 對於有符號數,正數還是補零,但是負數的話,符號位原來是1,則左移移入0還是1,取決於電腦系統 移入0的稱為邏輯右移,移入1的稱為算術右移 迴圈移位:假設整數問為2位元組
Time of Update: 2018-12-04
template< class T>class A{public: typedef T A::*unspecified_bool_type;//另一類型,指向T的指標,但該類型是屬於A的,聲明時要加A<int>::,訪問時應加a.. operator unspecified_bool_type() const { m_p= 3; return &A::m_p;//一定要用A:: } public: T m_p;};A< int>
Time of Update: 2018-12-04
對簡單對象來說,記憶體結構布局很簡單,遵循以下描述:1、非待用資料成員是影響對象所佔據記憶體大小的主要因素,隨著對象的增加而增加;2、所有對象共用一份待用資料成員,用sizeof計算對象大小時不會包含待用資料成員佔據記憶體的大小;3、靜態成員函數和非靜態成員函數不影響對象記憶體的大小;4、如果對象中包含虛函數,會增加4位元組的空間用來儲存虛函數表指標。 對單繼承類,遵循如下描述:在衍生類別執行個體頭部存在一個基類執行個體,虛函數表與基類公用一個。基類的記憶體布局和簡單對象的記憶體布局一樣,衍生類
Time of Update: 2018-12-04
記憶體對齊。對下面的類: class B{ public:int m_a; short int m_b; double m_c private: int m_d; public: int GetValue(){ return m_c; }
Time of Update: 2018-12-04
譚浩強C語言http://www.codeguru.cn/cpp/TanHaoQiangC 十部演算法經典著作 合集http://www.codeguru.cn/cpp/10book 二級試題全集http://www.codeguru.cn/cpp/2JiCShiTiJi 高品質C++/C編程指南http://www.codeguru.cn/cpp/AdvanceC++-CProgramGuide
Time of Update: 2018-12-04
最近做一個項目,使用了一個抽象類別的線程類,使用的時候發現有時會出現調用純虛函數的情況,代碼如下:class Thread{public:Thread(int InitFlag=CREATE_SUSPENDED);~Thread();HANDLE m_ThreadHdl;private:virtual bool Execute()=0;static unsigned __stdcall threadPro( LPVOID pParam);};Thread::Thread(int
Time of Update: 2018-12-04
背景Google的開源項目大多使用C++開發。每一個C++程式員也都知道,C++具有很多強大的語言特性,但這種強大不可避免的導致它的複雜,這種複雜會使得代碼更易於出現bug、難於閱讀和維護。本指南的目的是通過詳細闡述在C++編碼時要怎樣寫、不要怎樣寫來規避其複雜性。這些規則可在允許代碼有效使用C++語言特性的同時使其易於管理。風格,也被視為可讀性,主要指稱管理C++代碼的習慣。使用術語風格有點用詞不當,因為這些習慣遠不止原始碼檔案格式這麼簡單。使代碼易於管理的方法之一是增強代碼一致性,讓別人可以
Time of Update: 2018-12-04
建立一個空的工程 我們首先在3DS Max建立面板裡面建立一個簡單的幾何物體,稱之為”widget” 。可以通過視圖視窗裡三個參數去修改它的幾何特性。Size表示輪廓尺寸,第二個參數left表示物體左翼的外延,第三個參數right表示右翼的外延。 首先我們去瞭解一下怎樣建立一個工程,可以通過以下兩種方法: 1. Using the Appwizards 2. Manually 某些外掛程式程式只能通過手動建立。 簡便起見,只介紹第一種方法。 Using the
Time of Update: 2018-12-04
範圍1. 命名空間(Namespaces)在.cc檔案中,提倡使用不具名的命名空間(unnamed namespaces,譯者註:不具名的命名空間就像不具名的類一樣,似乎被介紹的很少:-()。使用具名命名空間時,其名稱可基於項目或路徑名稱,不要使用using指示符。定義:命名空間將全域範圍細分為不同的、具名的範圍,可有效防止全域範圍的命名衝突。優點:命名空間提供了(可嵌套)命名軸線(name