C++中的引用與高級函數(shù)詳解
引用
定義:給變量起別名。
語法:數(shù)據(jù)類型&別名=原名。
int a=10; int &b=a; //(此時的a和b都指向了同一塊空間,都可對里面的元素進行修改)

對這兩個變量名字任意一個進行修改,兩變量的結果都會發(fā)生變化

引用注意事項
1.引用必須初始化
int a=10; int &b=a;(必須等于一個變量)
2.引用初始化后,不可以改變(永遠指向最初初始化指向的空間),初始化后只能進行賦值操作
int a=10; int c=20; int &b=a; b=c;(將c賦值給b后,b和a的值都為20,但b指向的空間依然和a一樣,不發(fā)生變化)
引用的做函數(shù)參數(shù)
作用:函數(shù)傳參時,可以利用引用的技術讓形參修飾實參
優(yōu)點:可以簡化指針直接修改實參
/1.引用做函數(shù)的參數(shù)
void sweap(int& a, int& b)//可以當作函數(shù)傳參的,傳進去的是自己本身,在函數(shù)中對其進行修改后變量本身也會被修改(類似于地址傳參)
{
int temp = a;
a = b;
b = temp;
}
引用做函數(shù)的返回值:
int& Add(int a, int b)
{
static int c = a + b;//靜態(tài)變量,存放在全局區(qū)域
return c;
}常量引用
void print(const int& val)
{//為了防止引用傳參的時候變量在函數(shù)中被修改而不影響自己本身,可以加入const。這樣變量就不會被修改
val=20
cout << "val=" << val << endl;
}引用的本質(zhì):
在c++內(nèi)部實現(xiàn)一個指針常量。
int a=10; int &b=a;//int *const b=&a; 若直接賦值給一個常數(shù) const int &b=10;//int temp=10;const int &b=temp; 加入const后變?yōu)橹蛔x,不可修改。
函數(shù)高級
1.函數(shù)的默認參數(shù)
在c++中,函數(shù)的形參列表中的形參可以有默認參數(shù)
語法:返回值類型 函數(shù)名(參數(shù)=默認值){}
int func(int a, int b = 20)
{
return a + b;
}注意事項:
注意:
1.如果某個位置已經(jīng)有了默認參數(shù),那么從這個位置開始往后,從左到右都必須有默認值
eg:
b有了默認值,后面的所以形參都要有默認值
int test1(int a, int b = 20, int c);
2.如果函數(shù)聲明有默認參數(shù),函數(shù)實現(xiàn)就不能有默認參數(shù)
聲明和實現(xiàn)只能有一個有默認參數(shù)
int test2(int a = 20, int b = 239);
int test2(int a, int b)
{
}
int fun(int a=10,int b=20)
{
retutn a+b;
}
int a = 10, b = 29;
如果自己傳入數(shù)據(jù)就用自己的數(shù)據(jù),如果沒有那么用默認數(shù)據(jù)。
//cout << "a+b=" << func(a,20) << endl;//結果=39
//cout << "a+b=" << func(a) << endl;//結果=30
return 0;2.函數(shù)占位參數(shù)
c++中函數(shù)形參列表里面可以有占位參數(shù),且傳參的時候也當作一個形參,必選滿足其形參數(shù)量
占位參數(shù)中可以有默認值
void test3(int a, int =20)
{
}3.函數(shù)重載:
作用函數(shù)名可以相同,提高復用性
條件:
同一作用域下
函數(shù)名稱相同
函數(shù)參數(shù)類型行不通,或者參數(shù)個數(shù)不同,或者順序不同
//void func(double a, int b); //void func(int a, double); //函數(shù)重載的注意事項: //a.引用作為函數(shù)的重載的條件 void func(int &a);//int &a=10; 不合法 //調(diào)用:func(a); void func(const int& a);//const int &a=10; 合法 //調(diào)用:func(10); //b.函數(shù)重載碰到默認參數(shù) void func2(int a); void func2(int a, int b = 10); //func2(10)//1,2都可以去調(diào)用,所以這樣調(diào)用行不通。 //當函數(shù)重載碰到默認參數(shù)的時候會出現(xiàn)二義性。 //func2(10,20)//這種情況下可以行得通。
到此這篇關于C++中的引用與高級函數(shù)詳解的文章就介紹到這了,更多相關C++高級函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
VS2019如何創(chuàng)建C++項目的實現(xiàn)示例
這篇文章主要介紹了VS2019如何創(chuàng)建C++項目的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08
VSCODE+cmake配置C++開發(fā)環(huán)境的實現(xiàn)步驟
這篇文章主要介紹了VSCODE+cmake配置C++開發(fā)環(huán)境的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03

