如: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...