Class is equal to structure plus member function, but a C++ structure can do any thing a class can do!
Only their default access level are different.
Structure's fields are public by default.
Class fields are private by default.
2010年10月17日 星期日
2010年10月16日 星期六
[C/C++] Default Arguments
在 C++ 裡,函式中的參數是可以在定義的時候給初始值的 (C 不支援)。
// definition void a (int b, int c = 1, int d = 1); int main () { a(1, 2, 3); a(1, 2); a(1); } // implementation void a (int b, int c, int d) { ... }
2010年10月15日 星期五
[BCB] 擷取檔案路徑與副檔名的函式
String str = "C:\\Program Files\\Borland\\CBuilder6\\Projects\\Project1.exe";
Label1->Caption = ExtractFileName(str);
// Project1.exe
Label2->Caption = ExtractFilePath(str);
// C:\Program Files\Borland\CBuilder6\Projects\
Label3->Caption = ExtractFileDir(str);
// C:\Program Files\Borland\CBuilder6\Projects
Label4->Caption = ExtractFileDrive(str);
// C:
Label5->Caption = ExtractFileExt(str);
// .exe
Label1->Caption = ExtractFileName(str);
// Project1.exe
Label2->Caption = ExtractFilePath(str);
// C:\Program Files\Borland\CBuilder6\Projects\
Label3->Caption = ExtractFileDir(str);
// C:\Program Files\Borland\CBuilder6\Projects
Label4->Caption = ExtractFileDrive(str);
// C:
Label5->Caption = ExtractFileExt(str);
// .exe
2010年10月6日 星期三
[C/C++] Data structure alignment
通常 structure 中都會以 size 最大的成員作為 alignment 的單位,以提高運算效率。
以 struct A1 來說,最大為 double 所以 alignment 的單位為 8 bytes,
sizeof( struct A1) 就會是 4 + 4 + 8 + 8 = 24 bytes。
sizeof( struct A2) 就會是 4 + 4 + 8 + 1 + p(7) + 8 = 32 bytes,
padding 了 7 bytes。
使用虛擬指令 #pragma pack() : 取消自定義對齊方式。
進行對齊。sizeof( struct D) 就會是 4 + 1 + p(1) = 6 bytes。
以 struct A1 來說,最大為 double 所以 alignment 的單位為 8 bytes,
sizeof( struct A1) 就會是 4 + 4 + 8 + 8 = 24 bytes。
sizeof( struct A2) 就會是 4 + 4 + 8 + 1 + p(7) + 8 = 32 bytes,
padding 了 7 bytes。
struct A1 { int a; char b[12]; double c; }; struct A2 { int a; char b[13]; double c; };使用虛擬指令 #pragma pack(n) : 編譯器將按照 n bytes 對齊。
使用虛擬指令 #pragma pack() : 取消自定義對齊方式。
#pragma pack(2) struct D { int a; char b; }; #pragma pack()如果指定的 n 大於 structure 中成員的最大 size 將不起作用,仍依 size 最大的成員
進行對齊。sizeof( struct D) 就會是 4 + 1 + p(1) = 6 bytes。
訂閱:
文章 (Atom)