C++中的引用與高級函數(shù)詳解
引用
定義:給變量起別名。
語法:數(shù)據(jù)類型&別名=原名。
int a=10; int &b=a; //(此時的a和b都指向了同一塊空間,都可對里面的元素進行修改)
對這兩個變量名字任意一個進行修改,兩變量的結(jié)果都會發(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ù)傳參時,可以利用引用的技術(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;//結(jié)果=39 //cout << "a+b=" << func(a) << endl;//結(jié)果=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)//這種情況下可以行得通。
到此這篇關(guān)于C++中的引用與高級函數(shù)詳解的文章就介紹到這了,更多相關(guān)C++高級函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C++中引用、內(nèi)聯(lián)函數(shù)、auto關(guān)鍵字和范圍for循環(huán)詳解
- C++命名空間?缺省參數(shù)?const總結(jié)?引用總結(jié)?內(nèi)聯(lián)函數(shù)?auto關(guān)鍵字詳解
- C++示例分析內(nèi)聯(lián)函數(shù)與引用變量及函數(shù)重載的使用
- C++右值引用與move和forward函數(shù)的使用詳解
- 聊聊C++中右值引用和移動構(gòu)造函數(shù)的使用
- 舉例剖析C++中引用的本質(zhì)及引用作函數(shù)參數(shù)的使用
- 詳解C++編程中向函數(shù)傳遞引用參數(shù)的用法
相關(guān)文章
Qt圖形圖像開發(fā)之QT滾動區(qū)控件(滾動條)QScrollArea的詳細方法用法圖解與實例
這篇文章主要介紹了Qt圖形圖像開發(fā),QT滾動區(qū)控件(滾動條)QScrollArea的詳細方法用法圖解與實例,需要的朋友可以參考下2020-03-03