2011年11月9日 星期三

VC.ch10 類別繼承

1. 被繼承的基礎類別的內定存取屬性是private,即如下:
    calss CCandyBox: private CBox
    基礎類別依訂有存取屬性,用來決定被衍生類別繼承後的成員存取狀態。若省略存取屬
    性,編譯器將假設基礎類別的存取屬性是private。

2. 若是繼承改成public,即可繼承基礎類別的成員與其成員函式。如:
    class CCandyBox: public CBox

3. 類別繼承關係
    Base Class          ---->  derived Class
    member              ---->   member
    member_function ---->  member_function
    constructor          --x
    destructos           --x
    = operator          --x
    others operator   ---->  others operator

                                        constructor
                                        destructor
                                        member
                                        member_function

4. 在基礎類別為public的成員,在衍生類別中仍為public,protected的成員仍是protected。
5. 在基礎類別宣告為private的成員,在衍生類別中絕對無法存取。
6.virtual function, 多重繼承

2011年11月8日 星期二

VC: pointer to pointer

Reference1: http://c-faq.com/~scs/cclass/int/sx8.html
Reference2: http://blog.xuite.net/coke750101/coketech/20670525

Example:    char **pa;    可以重寫為   char *(*pa);
   若 pa = 0x1000; 
  *(pa+0) : 0x1000  ----> [0x009a]
  *(pa+1) : 0x1002  ----> [0x009f ]
  *(pa+2) : 0x1004  ----> [0x00a3]

   //address      value
    [0x009a] =  B
    [0x009b] = O
    [0x009c] = O   <-----*(*pa)+2
    [0x009d] = K
    [0x009e] = '0'

    [0x009f] = Y
    [0x00a0] = O  <-- *(*pa+1)+1
    [0x00a1] = U
    [0x00a2] = '0'

    [0x00a3] = T 
    [0x00a4] = E
    [0x00a5] = S
    [0x00a6] = T   <--- *(*pa+2)+3
    [0x00a7] = '0'
 
    [0x1000] = 0x009a   <-- *pa  
    [0x1002] = 0x009f   <-- *(pa+1)
    [0x1004] = 0x00a3  <-- *(pa+2)
   
    [0x????] = 0x1000   <-- pa
  

2011年11月2日 星期三

VC.ch8 運用類別建構自訂資料

1. 依照MFC慣例,所有Class的名稱之前必須加上C。該Class的member前要加m_。該Class的結束以分號(;)。
     ex: class CBox
          {
            public:
              double m_Length;
              double m_Breadthl
              double m_ Heigh;
          };

2. 在function前加上Class名稱和兩個冒號(::) 所組成的解析運算子。
     ex: CBox:: Volume()
          {
             .............
          }

3. Construtor中使用初始化串列:
    ex: CBox(double lv=1.0, double bv=1.0, double hw=1.0): m_Length(lv), m_Breadth(bv), m_Height(hv)
         {
            ...............
         }

4. private ,為避免成員被不必要干擾,並安全的存在。

5. friend ,允許非成員function存取該Class所有成員的權利。即一般函式不能存取private,但friend 函式可以。

6. this 指標,一種機制允許函式存取本身所屬物件的其他成員。
    ex: CBox::Compare(CBox xBox)
         {
             return this->Volume() > xBox.Volume();
         }

7. Class的static member,宣告為static的資料成員將只被定義一次,而此類別不管宣告多少個物件,都共用這一個實體。該static member初始化在Class的外部。
   ex: Class CBox
        {
            static int objectCount; 
        };
    
       CBox::objectCount = 0;



Windows 程式的表示方法

前置字      意義
b                BOOL
by              byte
c                char
dw             DWORD
fn               function
h                Handle
i                 int
l                 long
lp               long pointer
n                int
p               pointer
s               string
sz              strinng with "\0"
w              WORD    

2011年7月19日 星期二

更改註解顏色設定

Step1: Visual Studio --> 工具 -->選項

Step2: 環境-->字型和顏色-->文字編輯器-->註解->項目前景 or項目背景-->確定