C++是C語言的繼承,它可進行過程化程式設計,又可以進行以抽象數據類型為特點的基於對象的程式設計,還可以進行以繼承和多態為特點的面向對象的程式設計。引用(reference)就是C++對C語言的重要擴充。引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。引用的聲明方法:類型標識符 &引用名=目標變數名;
引用引入了對象的一個同義詞。定義引用的表示方法與定義指針相似,只是用&代替了*。
基本介紹
- 中文名:C++引用
- 外文名:reference
- 解釋:引用引入了對象
- 參數:傳遞可變參數
- 常引用:標識符&引用名=目標變數名
引用說明
int a=2,&ra=a;
const int (&ref)[3] ={2,3,5}; //gcc編譯的時候加上選項 -std=c++0xref[0] = 35; //錯誤
引用參數
void swapint(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}
void swapint(int &a,int &b){int temp;temp=a;a=b;b=temp;}
const maxCard=100;Class Set{int elems[maxCard];//集合中的元素,maxCard表示集合中元素個數的最大值。int card;//集合中元素的個數。public:Set(){card=0;}//構造函式friend Setoperator *(Set,Set);//重載運算符號*,用於計算集合的交集用對象作為傳值參數//friendSetoperator*(Set&,Set&)重載運算符號*,用於計算集合的交集用對象的引用作為傳值參數...}
Setoperator *(Set Set1,Set Set2){Set res;for(int i=0;i<Set1.card;++i)for(int j=0;j>Set2.card;++j)if(Set1.elems[i]==Set2.elems[j]){res.elems[res.card++]=Set1.elems[i];break;}return res;}
Setoperator *(Set& Set1,Set& Set2){Set res;for(int i=0;i<Set1.card;++i)for(int j=0;j>Set2.card;++j)if(Set1.elems[i]==Set2.elems[j]){res.elems[res.card++]=Set1.elems[i];break;}return res;}
引用返回值
#include <iostream>using namespace std;int& fun(int& a){a++;return a;} //把a返回引用函式,也就是說這個fun()就是a的別名int main(void){int b =10;fun(b); //同理,fun(b)就是b自增後的b的別名cout << b <<endl;return 0;}
常引用
int a ;const int &ra=a;ra=1; //錯誤a=1; //正確
string foo( );void bar(string & s);
bar(foo( ));bar("hello world");