1、inline function
嵌入到主調函式中的函式稱為內建函式(inline function),又稱內嵌函式,或內聯函式。指定內建函式,只需在函式首行的左端加乙個關鍵字inline即可。可以在宣告函式和定義函式時同時寫inline,也可以只在其中一處宣告inline,效果相同。內建函式中不能包括複雜的控制語句,如迴圈語句和switch語句,一般少於5句。 對函式作inline宣告,只是對編譯系統提出的乙個建議,編譯系統會根據具體情況決定是否這樣做。歸納起來,只有那些規模較小而又被頻繁呼叫的簡單函式,才適合於宣告為inline函式。
2、function overloading
c++允許用同一函式名定義多個函式,這些函式的引數個數和引數型別不同。過載函式除了允許引數型別不同以外,還允許引數的個數不同。引數的個數和型別可以都不同。但不能只有函式的型別不同而引數的個數和型別相同,過載函式的引數個數、引數型別或引數順序3者中必須至少有一種不同,函式返回值型別可以相同也可以不同。
3、function template
所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。
template 返回型別 函式名(函式模型形參表)
函式體其中,class也可用typename代替:
template < typename t> 或 template
#include "iostream"
using namespace std;
template
t abs(t x)
return x<0? -x:x;
int main()
int n=5;
double d=-5.5;
cout以下為類模板(class template)定義:
template 《模板形參表》
class 類名
類模板體定義;
如template
template
模板類 《模板參數列》 物件名1,....物件名n。
如果模板類的成員函式在類外實現,則必須是模板函式。如:
template
t& array::operator(int index) ; //類體
(4) 用類模板定義物件時用以下形式:
類模板名《實際型別名》 物件名;
類模板名《實際型別名》 物件名(實參表列);
如comparecmp;
comparecmp(3,7);
(5) 如果在類模板外定義成員函式,應寫成函式模板形式:
template函式型別 類模板名《虛擬型別引數》∷成員函式名(函式形參表列)
template
numtype compare∷max( )
說明:
(1) 類模板的型別引數可以有乙個或多個,每個型別前面都必須加class,如
template
class someclass
在定義物件時分別代入實際的型別名,如
someclassobj;
(2) 和使用類一樣,使用類模板時要注意其作用域,只能在其有效作用域內用它定義物件。
(3) 模板可以有層次,乙個類模板可以作為基類,派生出派生模板類。
4、有預設引數的函式
如有一函式宣告(定義中)有float area(float r=6.5);//指定r的預設值為6.5
實參與形參的結合是從左至右順序進行的。因此指定預設值的引數必須放在形參表列中的最右端,否則出錯。
乙個函式不能既作為過載函式,又作為有預設引數的函式。因為當呼叫函式時如果少寫乙個引數,系統無法判定是利用過載函式還是利用預設引數的函式,出現二義性,系統無法執行
5、內部函式和外部函式
如果乙個函式只能被本檔案中其他函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。函式首部的一般格式為
static 型別識別符號 函式名(形參表)
如static int fun(int a,int b)內部函式又稱靜態(static)函式。
在定義函式時,如果在函式首部的最左端冠以關鍵字extern,則表示此函式是外部函式,可供其他檔案呼叫。如函式首部可以寫為extern int fun (int a, int b)
這樣,函式fun就可以為其他檔案呼叫。如果在定義函式時省略extern,則預設為外部函式。在需要呼叫此函式的檔案中,用extern宣告所用的函式是外部函式。
6、函式原型、預處理
用函式原型能夠把函式的作用域擴充套件到定義該函式的檔案之外(不必使用extern)。只要在使用該函式的每乙個檔案中包含該函式的函式原型即可。函式原型通知編譯系統:該函式在本檔案中稍後定義,或在另一檔案中定義。利用函式原型擴充套件函式作用域最常見的例子是#include命令的應用。
預處理命令是c++統一規定的,但是它不是c++語言本身的組成部分,不能直接對它們進行編譯。為了與一般c++語句相區別,這些命令以符號「#」開頭,而且末尾不包含分號。
c++提供的預處理功能主要有以下3種:
(1) 巨集定義
(2) 檔案包含
標頭檔案是原始檔之間的介面,新的c++標準庫中的標頭檔案一般不再包括字尾.h。
(3) 條件編譯
但是有時希望程式中某一部分內容只在滿足一定條件時才進行編譯,也就是指定對程式中的一部分內容進行編譯的條件。如果不滿足這個條件,就不編譯這部分內容。這就是「條件編譯」。
a] #ifdef 識別符號
程式段1
程式段2
#endif
b]#if 表示式
程式段1
#else
程式段2
#endif
基本概念 C 基本概念
由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...
c 基本概念
1程式設計基礎1.1 基本概念 1.const 的理解 const char char const char const的區別問題幾乎是c 面試中每次都會有的題目。事實上這個概念誰都有只是三種宣告方式非常相似很容易記混。bjarne在他的the c programming language裡面給出過...
c基本概念
程式 計算機能識別和執行的指令,由各種函式組成。c面向過程,可直接操作硬體。pwd 當前工作目錄 cd 不加引數 進root cd folder 進入資料夾 cd 上級目錄 cd 返回root cd 返回上乙個訪問的目錄 rm 檔名 刪除 cat 檔名 less 在終端下檢視檔案 ls 列出目錄下所...