a、開闢單個物件的記憶體空間
格式1:指標變數名=new 型別識別符號;
格式2:指標變數名=new 型別識別符號(初始值);
例子:
int *a = new int(5) /* 開闢sizeof(int)位元組空間,並初始化為5 */
b、開闢陣列空間
指標變數名=new 型別名[下標表示式];
例子:
int *a = new int[100]; //開闢乙個大小為100的整型陣列空間
a、刪除單個物件的位址空間
int *a = new int;
delete a; //釋放單個int的空間
b、刪除陣列空間
int *a = new int[5];
delete a; //釋放int陣列空間
new/delete、new/delete要配套使用。參考文章:
建構函式就是和類名相同名字的乙個函式,乙個類可以有多個建構函式,在物件被建立時,根據引數的不同,將會自動呼叫類的建構函式。
class person
person(char *name, int age, char *work = "none")/* 建構函式 */
}int main(int argc, char **argv)
在物件被銷毀的前一刻,析構函式被自動呼叫,乙個類只能有乙個析構函式。析構函式的名字和類名相同,只是在前面多了乙個符號 ~
class person
person(char *name)
person(char *name, int age , char *work = "none")
~person() /* 析構函式 */
};
在物件被建立的時候會有乙個預設的拷貝建構函式,該函式會對原物件進行值的拷貝,那麼這就會產生乙個問題:在物件被銷毀的時候呼叫析構函式可能會引起同一段記憶體被釋放2次,顯然這是不合理的。
class person
person(char *name)
person(char *name, int age, char *work = "none")
person(person &per) /* 拷貝建構函式 */
~person()
if (this->work)
}};
a,建立多個物件,呼叫建構函式的順序是怎樣的?
按執行中定義物件的順序呼叫建構函式,靜態物件只呼叫一次建構函式,全域性物件在main函式執行前被構造
b,乙個類中的資料成員是另外乙個類,那麼在建立這個類的物件時,建構函式的呼叫順序是什麼?要給父類的建構函式傳遞引數該怎麼操作?
在建立物件時,父類的建構函式最先被呼叫。
class student
/* 給父類建構函式傳遞引數 */
student(int id, char *father, char *mother, int father_age = 40, int mother_age = 39):mother(mother,mother_age),father(father,father_age)
~student()
};int main(int argc, char **argv)
C 構造和析構
include using namespace std class b b b b b b int i data i b operator b b private int data b play b b int main output constructed by parameter 5 destr...
C 構造和析構
建構函式的作用是給類中的資料成員初始化,在乙個類物件產生的時候自動呼叫,建構函式分為帶參構造 無參構造。他倆唯一的區別就是乙個有引數,乙個沒引數,視實際情況使用 class cmyc cmyc cmyc cmyc cmyc int a,float b,char ch 它在乙個類物件被建立的時候自動呼...
C 構造和析構
1 繼承關係可認為,子類在父類的基礎上進行。從這個角度講,可把它認為穿衣 的過程。穿衣是 先穿內衣,再穿外套。是 先脫外套,在 構造是 先呼叫父類構造方法,再呼叫子類構造方法。析構是 先呼叫子類析構方法,再呼叫父類析構方法。2 構造可分為兩個步驟 初始化列表和方法內賦值。前者的使用場景是 初始化,即...