61.
delete表示式只能應用在:用new表示式產生的指標上,如上例.
62.例如.需要的時候才分配乙個字串,但又不知道該字串長度時才分配與釋放的物件被稱為動態分配物件.
動態分配的物件被分配在程式的空閒儲存區的可用記憶體池中.
程式設計師用new來建立動態分配物件,用delete來結束時物件的生命週期.
63.名字空間namespace表示方法:
namespace myspace
名字空間的別名:
namespace n=myspace;
64.
什麼時候用到extern
a,在此檔案中宣告別的檔案的變數時用extern
b,在cpp程式檔案中用到c的庫函式時用extern
65.什麼時候用到static?
a,宣告靜態變數時用static
b,宣告全域性變數時可用static
c,static型的變數是儲存在靜態儲存的,他的值在程式執行時只初始化一次
66.
過載函式:
概念:允許多個函式共享同乙個函式名,引數可不同但實現的功能相同,過載不關心函式的返回值型別.
目的:為多個不同引數不同名函式,但實現的功能相同的多函式,提供了一種簡潔解決方法.
如以下均是過載函式:
① double calculate(double);
② double calculate(double,double);
③ double calculate(double, int);
① 和②可構成過載,②和③也可構成過載,① 和③也可構成過載.
成員函式被過載的特徵有:
1) 相同的範圍(在同乙個類中);
2) 函式名字相同;
3) 引數不同;
4) virtual關鍵字可有可無。
67.覆蓋是指:
派生類中存在重新定義的函式,其函式名、引數列、返回值型別必須同父類中的相對應被覆蓋的函式嚴格一致
覆蓋的特徵有:
1) 不同的範圍(分別位於派生類與基類);
2) 函式名字相同;
3) 引數相同;
4) 基類函式必須有virtual關鍵字。
68.
當乙個函式在乙個域(類)中被多次宣告時,編譯器會按如下步驟解釋第二個(以及後續)的宣告:
a.如果兩個函式的參數列中引數的個數或型別不同,則認為這兩個函式是過載.
void print(const string &);
void print(vector &);//過載函式
b.如果兩個函式的返回型別和參數列精確匹配,則第二個宣告被視為重複,則產生編譯錯誤.
void print(const string &str);
void print(const string &);//宣告同一函式,錯誤!
c.如果兩個函式的參數列相同,但是返回型別不同,則第二個宣告被視為重複,則產生編譯錯誤.
unsigned int max(int i1,int i2);
int max(int,int);//錯誤.
d.如果在兩個函式的參數列中,只有預設實參不同,則第二個宣告被視為重複.
int max(int *ia,int sz);
int max(int *,int=10);
e.如果兩個函式中,函式名和參數列都相同,而只是乙個函式的參數列中有const時,則不能過載,因為const不可更改;但是當用在指標和引用上時例外.
int f(int);
int f(const int );//出錯.
69.注意:
過載函式必須在同乙個類(域)中,不同類(域)間的函式不能過載.
70.
函式過載的解析過程:
當出現引用該過載函式時,檢查當前類中,該同名函式的數量,然後分析那乙個與當前最匹配,則選用最匹配做為解析,如轉換出錯,則返回錯誤.
71.
lpcstr — lpctstr —- cstring — char* —-char —- char —- 區別?
lpctstr 是將 const char* 型別重新定義
lpcstr 是把 char*型別重新定義
char 是把char型別重新定義
char 沒有這個東西
cstring是乙個類,封裝了常用的字串操作
position 是指集合中某個元素的位置.
如果要表示乙個字串可以這樣
char str[32] = 「a string」;
char *buf = 「bbbbb」;
cstring s = 「ccccc」;
如果要支援unicode最好使用cstring類,簡單
72.
_t(「」)是乙個巨集,他的作用是讓你的程式支援unicode編碼
如果你編譯乙個程式為ansi方式,_t實際不起任何作用。
而如果編譯乙個程式為unicode方式,則編譯器會把」hello」字串以unicode方式儲存。
_t和_l的區別在於,_l不管你是以什麼方式編譯,一律以unicode方式儲存。
73.1.快捷鍵
shift+f4可檢視上乙個和下乙個錯誤.
f5執行
f7編譯
f9斷點
f10步越除錯
f11步入除錯
shift+f5結束除錯
ctrl+f5執行
2.問題
改動原始碼後,f5時會彈出視窗提示.
變數生存期的問題:迴圈體內定義的變數在迴圈結束時就會被銷毀,
指標就是位址,指標變數是用來儲存位址的!當然,在定義的時候得定義好指標將要指向的變數是int, float ,char,double等中的那種型別。
c 小知識點
1 陣列間拷貝只能使用for迴圈乙個乙個拷貝,但是vector之間可以直接用乙個vector初始化另乙個vector。int main 2 vector 之間比較大小直接用 3 對於實參型別相同,並且數目不確定的情況下我們可以傳遞名為initializer list的標準庫型別。int func s...
C 小知識點
1.在c 中,每個程式必須包含乙個main 的入口函式,只有這樣,這個專案才能執行.2.函式包括 函式名,引數,返回值.3.return 是c 的預定義語句,提供了終止函式的一種方法 return 0表示成功執行正常退出.4.using namespace std 是指引用c 的標準庫.5.c 的4...
c小知識點
一 rand rand 函式用來產生隨機數,但是,rand 的內部實現是用線性同餘法實現的,是偽隨機數,由於週期較長,因此在一定範圍內可以看成是隨機的。rand 會返回乙個範圍在0到rand max 至少是32767 之間的偽隨機數 整數 在呼叫rand 函式之前,可以使用srand 函式設定隨機數...