本文內容摘錄自:從零開始學C++程序設計,僅作爲入門使用。
構造函數可以用於對象初始化的工作。
也就是在聲明對象後希望能設置對象中數據成員的初值,可以使用構造函數來聲明。
析構函數用於在對象生命週期結束時釋放對象所佔用的內存空間。
構造函數具有以下四個特性:
- 構造函數的名稱必須與類名稱相同
- 不需要指定返回類型,沒有返回值
- 當對象被創建時自動產生默認的構造函數,默認的構造函數不提供參數行
- 構造函數可以有重載功能
#include <iostream>
#include <stdlib.h>
using namespace std;
class Student
{
private:
int StuID;
float English, Math, Total, Average;
public:
Student();
Student(int id, float E, float M) {//聲明構造函數
StuID = id;
English = E;
Math = M;
Total = E + M;
Average = (E + M)/2;
cout<<"------------------------"<<endl;
cout<<"學生學號:"<<StuID<<" "<<endl;
cout<<"英語成績:"<<E<<endl;
cout<<"總分是"<<Total<<"分,平均是"<<Average<<"分"<<endl;
}
};
int main()
{
Student stud1(920101, 80, 90);
Student stud2(920102, 60, 70);
cout<<"------------------------"<<endl;
return 0;
}
析構函數:
析構函數在對象生命週期結束後在內存中執行清除與釋放對象的操作。它的名稱必須與類名稱相同,且必須在前面加上“~”符號,不能有任何參數行。聲明語法如下:
~類名稱()
{
//程序主體
}
析構函數具備以下四個特性:
析構函數不可以重載,一個類只能有一個析構函數。
析構函數的第一個字符必須是~,其餘則與該類的名稱相同。
析構函數不含任何參數,也沒有返回值。
當對象的生命期結束時或是通過delete語句將new語句分配的對象釋放時,編譯程序將會自動調用析構函數。
#include <iostream>
#include <stdlib.h>
using namespace std;
class testN {
int no[20];
int i;
public:
testN() {
int i;
for(i = 0; i < 10; i++) {
no[i] = i;
}
cout<<"構造函數執行完成。"<<endl;
}
~testN() {
cout<<"析構函數被調用,\n顯示數組內容。";
for(i = 0; i < 10; i++) {
cout<<no[i]<<" ";
}
cout<<"\n"<<"析構函數已執行完成。"<<endl;
}
};
int show_result()
{
testN test1;//對象離開程序區塊前會自動調用析構函數
return 0;
}
int main()
{
show_result();
return 0;
}