虛擬函數
虛擬函數會以關鍵字 virtual 為首宣告在基底類別。用途為供其衍生類別各自實作所需的同名成員函數。
ex.
class MyClassVF {
public:
virtual int myfunc ()
{ return 0; }
};
Pure Virtual Function
單純虛擬函數
為虛擬函數的一種,其宣告方式為 virtual return_type function_declaration (parameter) = 0;
ex.
class MyClassPVF {
public:
virtual int myfunc (void) = 0;
};
Abstract Class
抽象類別
含有虛擬函數宣告的類別即為抽象類別,所以上述面舉的兩個例子中的 MyClassVF、MyClassPVF 都是。
Boxing and Unboxing
裝箱、拆箱
Boxing 將實值類別轉換成 object 類別。
Unboxing 將 object 類別轉換成實值類別。
參考資料:http://msdn.microsoft.com/zh-tw/library/yz2be5wk.aspx
ex.
int i = 123; // a value type
object o = i; // boxing
int j = (int)o; // unboxing
Tracking Handles
追蹤處理
Tracking Handle 有點像是指標,其內容也是存一個位址。
宣告方式為 type^ variable_name;
不過和指標不一樣的是,他的位址是由垃圾回收者自動更新。
換句話說,手動調整 Tracking Handle 的位址是不被允許的。
還有,和指標一樣,在宣告 Tracking Handle 時,他是不指向任何位址的。
因此,任何的參考前都必須先作指定初始位址的動作。
ex.
String^ sentence;
sentence = nullptr; // set handle to null
sentence = "This is a sentence.";
int^ value = 0; // initialization
*value = 100;
L"...."
將 "..." 轉換為 unicode。
stdafx.h
參考文件:http://zhidao.baidu.com/question/3711602.html
Using Enumerators as Flags
一個很實用的技巧,不過只有在 C++/CLI 底下才能用。ANSI C++ 並不支援。
參考資料:Beginning Visual C++ 2008[Ivor Horton]
ex.
[Flags] enum class FlagBits{ Ready = 1, ReadMode = 2, WriteMode = 4, EOF = 8, Disabled = 16};
FlagBits status = FlagBits::Ready | FlagBits::ReadMode | FlagBits::EOF;
Console::WriteLine(L”Current status: {0}”, status);
output:
Current status: Ready, ReadMode, EOF
沒有留言:
張貼留言