c 小知識點5 0

2021-07-25 07:49:57 字數 2845 閱讀 3063

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 函式設定隨機數...