原创 函數的指針與指針函數

(1) Long (*fun)(int)        fun是一個函數指針,這個指針返回值是long,所帶的參數是int.  (2) Long *fun(int)        指針函數,是一個帶有整數參量並返回一個長整型變量的指針的函

原创 const與const指針

一.C/C++中的const      C中的const是"一個不能被改變的普通變量",在C中,它總是佔內存的,而且它的名字是全局符,默認是外部連接.C編譯器不能把const看成一個編譯期的常量.在C中:       const bufs

原创 State 模式學習筆記

State 模式 轉:板橋里人 http://www.jdon.com 2002/4/6/ State模式的定義: 不同的狀態,不同的行爲;或者說,每個狀態有着相應的行爲. 何時使用?State模式在實際使用中比較多,適合"狀態的切換

原创 C++ 的構造/析構/賦值/拷貝函數比較

構造函數、析構函數與賦值函數是每個類最基本的函數。每個類只有一個析構函數,但可以有多個構造函數(包含一個拷貝構造函數,其它的稱爲普通構造函數)和 多個賦值函數(除了同類的賦值以外,還有其他的賦值方法)。對於任意一個類A,如果不想編寫上述函

原创 C++對象創建(二)

當一個C++對象被創建時,有兩件事會發生: (1)爲對象分配內存. (2)調用構造函數來初始化那個內存. 到目前爲止,我們應該確保步驟 2)一定發生。C++強迫這樣做是因爲未初始化的對象是程序出錯的主要原因。不用關心對象在哪裏創建和如何創

原创 C++對象的創建(一)

C++中假如創建類A的對象a。 可以這樣做: (1): A a; (2): A *p=new A; 這兩種方法的異同: A a; 這樣的對象的內存分配在棧上,超出作用域(比如在函數fun中創建的a對象,在函數結束後,就超出了作用域) 就調

原创 堆與棧的區別

堆和棧的區別 2007-04-18 20:51 一、預備知識—程序的內存分配一個由c/C++編譯的程序佔用的內存分爲以下幾個部分1、棧區(stack)—      由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類

原创 剖析類的this指針

this指針是在實例化一個對象後產生的,並且指向對象本身. 類的this指針有如下特點: (1) this只能在成員函數中使用.       全局函數,靜態函數都不能使用this.       實際上,成員函數默認第一個參數爲T* con

原创 main主函數執行完後,可以利用atexit再執行一段代碼

#include<stdlib.h>#include<stdio.h> int atexit(void(*function)(void)); void fun1(void),fun2(void),fun3(void); int main(

原创 指針與引用的區別

一.定義 C++是一種強類型語言,不能把不是同類型的指針相互賦值,如過發生,必須強制類型轉換. C++中的引用(&)象一個自動能被編譯器逆向引用的常量指針. for ex: int x=0; int &a=x; a++;  這裏增加a事實

原创 句柄和指針的區別與聯繫

      句柄是一個32位的整數,實際上是windows在內存中維護的一個對象(窗口等)內存物理地址列表的整數索引。因爲windows的內存管理經常會將當前空閒對象的內存釋放掉,當需要時訪問再重新提交到物理存儲,所以對象的物理地址是變化

原创 關於單鏈表的基本操作

#include <malloc.h>#include <stdio.h>//以下鏈表均帶有頭節點;頭節點不存放數據,只起到帶頭作用。typedef struct LNode{ int data; struct LNode *next;}

原创 空指針和迷途指針的區別

解釋代碼: #include <iostream.h>int main(){ int *pInt = new int; *pInt=10; cout<<*pInt<<endl; delete pInt; pInt=0;  *pInt=20

原创 深入理解sizeof與strlen的區別

Sizeof與Strlen的區別與聯繫(轉) 1.sizeof操作符的結果類型是size_t,它在頭文件中typedef爲unsigned int類型。 該類型保證能容納實現所建立的最大對象的字節大小。 2.sizeof是算符,strle

原创 公有繼承,私有繼承,和保護繼承

  1.   公有繼承(public)     公有繼承的特點是基類的公有成員和保護成員作爲派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然