codefreak
http://fsfoundry.org/codefreak/
- C++ Terminology - 1. Variety of Types
Template Class
也是 user-defined type 的 subset. 為 class template 的 instance
(具現), e.g.:
typedef listIntList;
POD
Acronym for Plain Old Data. User-defined C-style structure. 為
user-defined type 的 subset, 需符合下列條件:
1. 沒有 user-defined constructor, destructor 以及 assignment operator
2. 沒有 base class type, 換句話說非 derive 自 user-defined type
3. 如果有 data member, 其所有 data member 必須為 fundamental type 或 POD
下兩例皆為 POD:
class SomePodType
{
public:
unsigned int data0;
};
struct AnotherPodTypeWithDataMember
{
SomePodType data1;
char data2;
};
User-defined Type
Aka. class type. 使用者自訂型別, 也稱為類或類別. 泛指所有的 struct 與
class, 包含 C++ Standard Library 定義的型別, e.g.:
class SomeClass;
struct SomeStruct;
templateclass basic_string;
對 C++ 來說, 在定義 user-defined type 時, class 與 struct 幾乎是沒有差別且
能互相替換 (interchangable). 唯一的差別是預設 (默認) 的存取權限:
class DerivedClass : /*private*/ BaseClass
{
/*private:*/
int data;
};
struct DerivedStruct : /*public*/ BaseStruct
{
/*public:*/
int data;
}; - C++ Terminology - 2. Instance and Instanciation
- Misconception of C++ Efficiency
- Is your Singleton Broken?
- Pointer to What?foo const * b;
定義一個名為 b 的 (非常數) 指標, 這個指標指向一個常數 (const) foo.
foo * const c;
定義一個名為 c 的常數 (const) 指標, 這個指標 指向一個 (非常數) foo. - Boost.Lambda
- C++0x
- C/C++ Tips - The Marco Assertassert() 是個用來 debug 的macro, 接受一個 expression. 如果 expression 被 evalute 的結果為整數零, 或能被 convert 成零 (如 null pointer), 則會引發 assertion failure.
assert(str != NULL); //str == NULL時會引發assert
1 則留言:
哇! 你真是超用功的~
張貼留言