1. c++ 整數型別範圍
可以參照標頭檔案limits.h
定義的巨集
#define int_max 2147483647(
32bit,
最大10
位十進位制)
#define uint_max 4294967295u(
32bit,
最大10
位十進位制)
#define llong_max 9223372036854775807ll(
64bit,
最大19
位十進位制)
#define ulong_max 18446744073709551615ul(
64bit,
最大20
位十進位制)
2. 防止標頭檔案被包含多次
標頭檔案中往往這樣寫
#ifndef headerfilename_h
#define headerfilename_h
....your code
#endif
3.變數是這樣宣告的
extern int e; 我們一般不會
extern int e=1;
因為這樣就算是直接定義了
e,沒必要了;同乙個作用域可以宣告多次,但只能定義一次。
4.string 的一般用法
string s1,s2("string"),s3(s2),s4(5,'c'),s5(s2.being(),s2.end());
char* cp = 「string」;
char c_array = 「string」;
char sb = ;//無結尾字元陣列
string s6(cp), s7(c_array), s8(c_array,c_array+1);
string s9(sb);//runtime error
if(s1.empty())
cout<
ifstream fin("a");
while(getline(fin,s1))
fin.close();
s1 = s2;// first free s1's memory, second new a memory for s1, third copy data from s2 to s1.
s1 += s2;
s1 += "...";
//一些方法
包含了很多字元操作方法
c_str(); 返回
const char*
insert,assign//替換
rfing//最後一次出現的位置,
find_first_of(args)//args
中任意字元第一次出現的位置,
find_last_of(args)//args
中任意字元最後一次出現的位置,
find_first_not_of(args)//
物件中第乙個不屬於
args
的字元,
find_last_not_of(args)//
物件中最後乙個不屬於
args
的字元。
compare
5. 指向常量的指標和常指標
const int * p = π//常量的指標
,不能通過p改變
pi的值。
pi可以是常量或者是變數。
int * const p = π//常指標
6. 陣列初始化
char a[5] = ; 乙個定長空串,全是
\0int a[3] = ; 其餘會初始化為0;
int a[2][3]=,,};//按行初始化,每行其餘是
0int a[2][3]=;//全部按位址順序初始化,其餘是
07. 函式指標
bool (*pf)(const string &); //定義乙個引數為乙個常字串引用返回型別為
bool
型別的函式指標。
typedef bool (*pf)(const string &); //pf 可以定義函式指標
如果定義了bool myfun(const string &);
pf test = myfun;或者
pf test = &myfun;
8. 返回引用
返回引用可以避免一些物件的拷貝,節約記憶體以及開闢記憶體的時間。當然返回引用也有其特別的地方,就是有時候可以做左值:
char &get_val(string &s, string::size_type x)
那麼你可以這樣呼叫他:
string s=」1234」;
get_val(s,0) = 『a』;//s的值為」a234」
如果不想讓其成為左值,那麼引數要宣告為「const string & s
」注意:不要返回臨時物件的引用和指標!
9. 靜態變數是被自動初始化的
10. for迴圈定義的迭代變數是區域性的
for(int i=0;i<2;i++)
}0101
11. palcement new 的使用
palcement new之所以有好處是因為他可以把物件放在一片指定的記憶體之中,如果這個物件建立刪除比較頻繁他會比普通的new有很大優勢。普通的new需要重新尋找一片足夠大的連續記憶體才行。
#include
#include
using
namespace
std;
const
intchunk = 16;
class
foo
foo( )
private
: int
_val;
};
//預分配記憶體,但沒有foo物件
char
*buf =
newchar
[ sizeof
(foo) * chunk ];
intmain()
//到這裡不能再使用pb
delete
buf;
return
0;
}12 c++方法隱藏
隱藏就是說方法看不到了,這種情況出現在子類實現了與父類同名的函式(引數不同也可以)。看下面的例子:
class sup
};class sub: public sup
int test(double i)
};int main()
這樣編譯不會通過,原因如下:c++在設計時出於安全考慮,他認為實現子類的人有可能不知道父類的方法,因為在呼叫的時候會呼叫匹配度最高的方法,所以在呼叫d.test()時很可能是程式設計師寫錯了而無意間呼叫了父類方法,這樣錯誤很難排查,所以乾脆吧父類同名方法隱藏。所以在編譯時會報錯,d找不到相應的方法。
如果你非要用base裡面的方法,可以顯示的在子類加上一句
class sub:public sup;
(持續更新中....)
C 基礎備忘錄
1.decimal 型別呼叫tostring 方法後沒把末尾的0去掉的解決辦法 例子 decimal?money convert.todecimal 10.8950 string moneystr money.value.tostring 結果在同一臺機子,兩個專案裡面會出現兩個不同的結果。結果一 ...
C語言程式備忘錄
1 編寫乙個將輸入複製到輸出的程式,並將其中連續多個空格用乙個空格代替。解1 注 從沒想到,無中生有也可以用在這裡。光靠c語言本身力量真的很有限。解2 解3 include void main 注 這個有點意思。看似空格乙個也沒輸出,但最後還是輸出了。關鍵在 當 pre ch 非空格而 ch 為空格...
c 備忘錄模式
結構圖 memento類 儲存狀態的容器 複製 如下 class memento public memento string state caretaker是儲存memento類 複製 如下 class caretaker originator類就是需要儲存狀態的類 複製 如下 class orig...