c++programs的代碼基本形式
1.頭文件(功能模塊的聲明)
2主函數
3其他函數的定義
頭文件中的防衛式聲明
當我們使用#include包含.h文件是,為了避免出現重復定義的現象,比如在頭文件中定義了一個類,如果在把頭文件包含到一個定義了與他相同類的.cpp的文件中,那么就會由于重復定義出現編譯錯誤。所以防衛式聲明是十分的有必要。形式如下
#ifndef HEAD_H(大寫不是必須的)
#define HEAD_H
......
#endif
inline(內聯)函數
與預處理類似,在編譯期間直接計算出結果,但是是否是一個內聯函數取決于編譯器,一般比較簡單的函數都可以實現內聯。
訪問級別
public ? 類的外部接口
private ? 只可以由本類成員訪問,外部訪問非法
protect ?與私有相似,區別在于繼承
friend友元
改變訪問級別,使得外部函數也可訪問類類型對象的所以數據和功能
void friend ?comple();
所以可以說class的各個函數互為friend函數
構造函數
與內置類型的初始化相似,由類定義的類類型,構造函數決定了類類型對象的初始化方式。
無返回值,支持默認參數的初始化,重載,內聯
注意:若定義了參數及其類型相同的兩個構造函數,一個有默認值一個沒有,這種情況是未定義的,因為編譯器將這兩個函數視為相同的。
私有構造函數
因為是私有成員所以不能被外部訪問,但可以在內部定義對象,如果將其定義為static,那么就可以得到一個單對象。
常成員函數
在成員函數的參數表后面加const(頂層const)(數據只讀)
1.常成員函數不能更新對象的數據成員
2.當一個對象被聲明為常對象,則不能通過該對象調用該類中的非const成員函數
傳值 與 傳參
傳值相當與拷貝一份備份
傳參相當于傳遞一個指針
操作符的重載
成員函數:對于一個2元操作符來說的重載函數直接一個參數,左邊是參數是默認的為其類類型對象,右邊參數是操作是另一個對象,
非成員函數:對于2個操作數的重載函數要兩個參數,不可以重載內置類型的操作符重載。
臨時對象
typname()
如果沒被保存,執行完這條語句就將消失。