C++核心技術篇(二)

頭文件與源文件

在前面的章節我們經常會用到輸入輸出流、字符串的頭文件(。h),其中包含數據和函數聲明。而這些文件的實現部分一般會放到與頭文件同名的實現源文件中(。cpp).
在一個源文件中使用#include指令,可以將頭文件的全部內容包含進來,也就是將另外的文件包含到本文件中。#include指令是編譯程序將另一個文件嵌入帶有#include的源文件,被讀入的源文件必須使用雙括號或尖括號括起來。例如:

#include<stdio.h>
#include"stdio.h"

上面給出了雙括號和尖括號的形式,這兩者之間的區別在於,用尖括號時,系統到存放C++庫函數頭文件所在目錄中尋找要包含的文件,這種稱爲標準方式;用雙引號時,系統先在用戶當目錄中尋找要包含的文件,若找不到,在到存放C++庫函數頭文件所在目錄中尋找要包含的文件。通常情況下,如果爲了調用庫函數而用#include命令來包含相關的頭文件,則用尖括號,可以節省查找時間。如果爲了調用庫函數而用#include命令來包含相關的頭文件,則用尖括號,可以節省查找時間,如果要包含的是用戶自己編寫的文件,一般用雙引號,用戶自己編寫的文件通常是在當前目錄中。如果文件不在當前目錄中,雙引號可以給出文件路徑。

對象

對象也稱類的事例化。定義新類後,可以通過類名來聲明一個對象

類的析構函數

當類的對象被銷燬時,編譯器會調用類的析構函數。與構造函數相比,析構函數主要執行的是收尾工作。構造函數名標識符和類名標識符相同,析構函數名標識符就是類名標識符前加“~”。
例如

~CPerson();

下面用一個例子來介紹析構函數的調用
例:析構函數的調用‘

#include<string>
#include<iostream>
using namespace std;
class title{
public:
       title(string str);
       title();
       ~title();
       string m_str;
};

title.h文件中聲明一個title類

#include<iostream>
#include"stdafx.h"
#include"title.h"
using std::cout;
using std::endl;
title::title(string str){
m_str=str;
cout<<str<<endl;
}
title::title(){
m_str="無名標題";
cout<<"這只是一個無名標題..."<<endl;
}
title::~title(){
cout<<"標題"<<m_str<<"要被銷燬了"<<endl;
}

含有main函數的cpp,表示程序的入口,代碼如下:

#include"stdafx.h"
#include"title.h"
#include<iostream>
using namespace std;
int main(){
string str("Hello Word!!!");
title out(str);
if(true){
title t;
}
cout<<"if執行完成"<<endl;
return 0;
}

從程序運行結果來看,首先產生了”hello word“標題,之後產生了if語句塊中的無名標題。if語句塊執行完畢後,對象t被銷燬。然後用輸出語句標識了分語句塊的完成。程序執行完畢,回收所有內存。out標題被銷燬,自身析構函數被調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章