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月9日 星期三
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
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;
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
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
訂閱:
文章 (Atom)