寫在前面:
在剛上大學的時候,學習各種各樣的計算機基礎知識,對我而言,剛開的時候我是不理解的,知識太抽象,只是機械的記住了概念和用法,往往忽略了一些細節。
當自己實踐增多的時候,各種知識漸漸的清晰起來,所有東西都是有來龍去脈的,原來不理解的東西都豁然開朗起來。這個時候再取回顧原來學習的知識技能,又有一種溫故而知新的感覺。因為我打算開始慢慢複習之前學習的基礎知識,這也算是我開始夯實基礎的乙個開篇吧!
用& 符號來標記,給儲存器別名int test(int x,float y)
引用和指標的有些類似,只不過引用可以直接賦值,而指標要轉化一下,如int x;
int& ref=x;
ref = 3;
//此時x為3
int* p;
p = new
int;
*p=3;
//ref可以直接賦值
int x;
int& ref=x;
ref = 3;
當呼叫時,會將x和y的互換,如swap(int& x,int& y)
c++預設的方式就傳值呼叫,傳入的引數會被拷貝乙個副本出來,對這個副本進行操作而傳入的變數不會發生改變,如int x=5;
int y=7;
swap(x,y);
//此時x=7,y=5
swap(int x,int y)
int x=5;
int y=7;
swap(x,y);
//此時x還是等於5,y還是等於7
int& test(int& result)
int a=5;
++test(a);
cout
注意:不要返回區域性變數,因為函式裡區域性變數再函式執行完畢後,會被釋放,返回區域性變數會發生錯誤!
int test(float j,int i=0)
test(5.5,1);
test(5.5);
有預設引數的變數要放在後面,沒有預設值的變數放在前面!
bool ismax(int x,int y)
bool ismax(float x,float y)
bool ismax(double x,double y)
過載的概念是對於同名函式來說的,允許函式名稱相同,這樣的好處其實是方便呼叫,不用根據資料型別來呼叫函式了,同樣的函式名可以處理不同的資料,因為c語言裡沒有過載的概念,所以可能會出現:
ismax_int;
ismax_float;
ismax_double;
......
這樣多難受,而c++只要ismax就能搞定所有,最終我們會根據函式的引數型別、個數、順序來區別這些同名的函式,這其實就是函式的簽名就是下個問題了。
函式簽名保證了函式的唯一性,對於過載來說因為函式名一樣,所以靠以下的第二點來區分
*函式名
*函式引數的個數、型別、順序
f();
g();
//名稱不同
f();
f(int a);
//引數個數不同
f(int a);
f(float a);
//型別不同
f(int a,float b);
f(float a,int b);
//順序不同
inline
void test(int a,int b)
在執行test(5,4)的時候,不會去做函式呼叫操作,因為編譯器相當於將test實現的**替換了呼叫那一行的**。好處是減小了呼叫開銷,但是程式的大小會膨脹,因為內聯函式會替換所有呼叫此函式的地方,有時候編譯器會因為一些原因不能去擴充套件這樣的請求,所以應該還是要看編譯器的情況吧。 C 基礎知識 轉換函式
1.舉例 分數物件視為doubule型別class fraction operator double const private int m num int m den 2.轉換函式的特點 2.1 沒有函式返回型別 2.2 沒有引數 2.3 必須是成員函式 3.注意事項 3.1 如果定義了全域性過載...
C 基礎知識(函式過載)
1 函式過載overload 概述 c 中允許出現同名函式,這種現象就叫函式過載。函式過載的目的是為了方便使用函式名。2 函式過載 2.1基本語法 實現函式過載的條件 1 同乙個作用域 2 引數個數不同 3 引數型別不同 4 引數順序不同。注 返回值不作為過載的依據。函式過載和預設引數設定一起使用時...
函式基礎知識
1.函式呼叫 注意函式名稱,引數個數,引數資料型別 2.函式定義 def 函式名 引數 函式體return 返回值 函式中也可以直接使用pass,意為什麼也不做,目的是讓程式能夠執行不報錯 python有一點值得注意,返回值可以為多個,例如 d def get weight and height d...