C 中的類與建構函式

2021-09-24 15:06:45 字數 2293 閱讀 3120

如:myteacher.h

//防止重複引入

#pragma once

class myteacher;

如:myteacher.cpp

#define _crt_secure_no_warnings

#include "myteacher.h"

#include void myteacher::setname(const char* name)

char* myteacher::getname()

void myteacher::setage(int age)

int myteacher::getage()

如:test.cpp

#include "myteacher.h"

using namespace std;

void main()

class teacher

//有參建構函式

teacher(char *name,int age)

};void main()

當物件要被系統釋放時,析構函式會被呼叫,一般用作善後處理

class teacher

//析構函式

~teacher()

//有參建構函式

teacher(char *name,int age)

};void func()

void main()

3.1 淺拷貝

using namespace std;

class teacher

//析構函式

~teacher()

//拷貝建構函式

teacher(const teacher &obj)

void myprint()

};void main()

輸出

有參建構函式

拷貝建構函式

rose,30

例如:出現異常的情況

using namespace std;

class teacher

//析構函式

~teacher()

void myprint()

};void func()

void main()

3.2 深拷貝

深拷貝拷貝的是指標指向的資料內容(兩塊記憶體區域)

using namespace std;

class teacher

//析構函式

~teacher()

//拷貝建構函式(深拷貝)

teacher(const teacher &obj)

void myprint()

};void func()

void main()

3.3 拷貝建構函式被被呼叫的場景

宣告時賦值

作為引數傳入,實參給形參賦值

作為函式返回值返回,給變數初始化賦值

建構函式屬性初始化列表的格式為:

[建構函式名稱]([本類中屬性列表],[第乙個類物件的屬性列表],[第二個類物件的屬性列表]):[第乙個類物件]([第乙個類物件的屬性列表]),[第二個類物件]([第二個類物件的屬性列表])
示例如下:

class teacher

~teacher()

char* getname()

};class student

~student()

void myprint()

};void func()

void main()

c++中通過new和delete來進行動態記憶體分配,new 和delete成對出現

c++中在使用new和delete會對應呼叫建構函式和析構引數,通過c中的malloc方式則不會呼叫建構函式和析構函式

class teacher

~teacher()

void setname(char* name)

char* getname()

};void func()

void main()

C 中類的建構函式與複製建構函式

建構函式是類的特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。建構函式的名字與類的名字相同,並且不能指定返回型別。像其他任何函式一樣,它們可以沒有形參,也可以定義多個形參。複製建構函式是一種特殊建構函式,具有單個形參,該形參 常用co...

C 中類的組合與建構函式

首先看看建構函式的概念。在程式執行過程中,當遇到物件宣告語句時,程式會想作業系統申請一定的記憶體空間用於存放新建的物件。而編譯器不知道如何產生 來實現初始化。所以c 做了一套物件初始化的機制,就是建構函式。然後是類的組合中,當建立類的物件時,如果這個類具有內嵌物件成員,那麼各個內嵌物件將首先被自動建...

C 中類的預設建構函式

在 c 中類的合成的預設建構函式2 1 和 c 中類的合成的預設建構函式2 2 中提到,如果類中沒有顯式地定義預設建構函式,則c 編譯器會為其創造乙個合成的預設建構函式,如果類中已經定義了其他格式的建構函式,此時c 編譯器不會再為其合成預設建構函式。而定義類時,最好要定義其預設的建構函式。在c 11...