2021.03.03
看書學習記錄一些區別於c的部分
當遇到函式的功能相似,但函式和引數的型別可能不同的情況下,為了避免重複的命名。在c++中允許用同乙個函式名定義多個函式,這些函式的引數個數和引數型別不同,這就叫做函式過載。
例如:分別求三個整型、雙精度和長整型數的最大值;可以如下定義:
執行結果如上圖所示,過載的函式體並不要求相同;
引數的個數和型別可以都不同。但不能只有函式的型別不同而引數的個數和型別相同,如下就是錯誤的使用:
intf(
int)
;doublef(
int)
;voidf(
int)
;
對於上面的問題,當函式體相同,只有引數的型別不同,這時候可以使用xc++提供的函式模板,用乙個虛擬的型別來代替。
例子如下:
使用方法為:
template 或template
當然,引數的型別個數還可以是多個,如
template
#include
using
namespace std;
template
<
typename t>
t max
(t a,t b,t c)
intmain()
執行的結果和上面函式過載的結果一致。
在呼叫乙個函式的過程中又出現直接或者間接的呼叫該函式本身,稱為函式的遞迴呼叫,c++允許函式的遞迴呼叫。包含遞迴呼叫的函式稱為遞迴函式。
例:用遞迴方法求n!
#include
using
namespace std;
long
fcn(
int n)
;//宣告函式
c++增加了「引用「機制來彌補指標由於太靈活,賦值不規範而引起的複雜錯誤。
引用的作用是為變數起乙個別名。
如int a;
int &b=a; //宣告b是a的引用
以上語句宣告了b是a的引用,即b是a的別名,這樣宣告之後,a或者b的作用相同,代表同乙個變數。&是引用宣告符,並不代表位址。
c++把引用型作為函式形參,彌補了c語言中只有值傳遞方式即「值形參「。
例:對3個變數按由小到大的順序排序。
#include
using
namespace std;
long
fcn(
int n)
;//宣告函式
intmain()
void
sort
(int
&i,int
&j,int
&k)//對i,j,k3個數排序
在軟體開發過程中,常常需要動態地分配和撤銷記憶體空間,例如對動態鍊錶中結點的插入和刪除。
在c中利用庫函式malloc和free來分配和撤銷記憶體空間
c++中提供了較簡單而功能較強的運算子new和delete來取代malloc和free。
new運算子使用的一般格式為:
new 型別 [初值]
new int(100); //開闢了存放整數的空間,並指定該整數的初值為100,返回乙個指向該儲存空間的位址
new char[10]; //開闢乙個存放字元陣列(10個元素)的空間,返回首元素的位址
new int [5][4]; //開闢乙個存放二維陣列(大小為5*4)的空間,返回首元素的位址(陣列空間不能指定初值在用new分配空間時)
float *p=new float(3.112); //開闢乙個存放單精度數的空間,並指定該實數的初值為
將返回的該空間的位址賦值給指標變數p
delete運算子使用的一般格式為:
delete 指標變數
撤銷上面的指標例子為:delete p;
delete [ ] pt; // 在指標變數前面加一對方括號,表示是對陣列空間的操作。
例子:開闢空間以存放乙個結構體變數
#include
#include
using
namespace std;
struct student //宣告結構體型別student
上面的程式並沒有定義結構體變數,而是定義了乙個基型別為student的指標變數p,用new開闢一段空間以存放乙個student型別的變數。
C 與C語言的不同之處
本文介紹了c 與c語言的不同之處。常見區別 庫函式 c stdio.h c iostream 輸入 c scanf c cin 輸出 c printf c cout 動態開闢 c malloc c new 釋放 c free c delete 以上是比較常見之處。下面是我在學習c 中認識到的內容 內...
小河學習日記 C與C 不同之處出
c與c 的不同之處 只講區別,c 有而c沒有的,請聽下回分解 一.記憶體管理 1.c使用的時malloc free,malloc再分配記憶體時是一頁一頁的分配的,當使用malloc時作業系統會直接批發32頁記憶體,所以使用malloc時,如果沒有後續在堆記憶體上的操作了,是可以越界的。例如如 這樣就...
C語言與C 的不同之處總結
一 c語言認為char屬於int,char型的數值計算實質是ascii碼 二 c語言沒有布林型別,除0位假外,其餘均為真 三 c語言沒有string型別 在c語言中並沒有char型別的常量 但是在c 中卻有,字元常量都是char型別 其實是用int表示char,字元型與整型相比只是更加節省記憶體。有...