久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C++引用

 復(fù)雜網(wǎng)絡(luò)621 2014-09-12

  獨(dú)立引用

“引用(reference)”與指針象似但不是指針,。引用主要有3種用法:
  • 單獨(dú)使用(一般稱為“獨(dú)立引用”),;
  • 作參數(shù)使用,;
  • 作返回值使用。

從功能上來(lái)說(shuō),,引用型變量又可以看做事被引用變量的“別名”,這兩個(gè)變量只是名稱不同,,變量的地址是同一個(gè)(共用體中的元素也是一樣),。使用“引用”的好處主要是可以“逆向引用”。

常量也可以被引用,,例如:“const int &ref = 10;”,,這也是正確的,但這樣定義無(wú)任何意義,。定義獨(dú)立引用時(shí)需要注意以下規(guī)則:
  • 引用型變量在定義時(shí)必須初始化,。
  • 被引用的對(duì)象必須已經(jīng)分配了空間,即不能為空,,或空指針,。
  • 被引用的對(duì)象不能為地址,即指針變量、數(shù)組變量等不能被引用,。

變量引用舉例:
  1. #include <iostream>
  2. using namespace std;
  3. int main( )
  4. {
  5. int a ;
  6. int &b = a; //b和a實(shí)際上是同一變量
  7. b = 100; //b賦值為100,,也就是a賦值為100
  8. cout << a << endl;
  9. //a的地址和b的地址應(yīng)該是完全一樣
  10. cout << &a << endl;
  11. cout << &b << endl;
  12. /*-------▼下面代碼有錯(cuò),注釋后才能運(yùn)行▼-----------
  13. int x[] = {12,15,20} ;
  14. int &y = x; //錯(cuò)誤:數(shù)組,、指針不能被引用
  15. int x1;
  16. int &y1; //錯(cuò)誤:引用時(shí)必須初始化
  17. y1 = x1;
  18. -------▲上面代碼有錯(cuò),,注釋后才能運(yùn)行▲-----------*/
  19. return 0;
  20. }
輸出結(jié)果:
100
0034F84C
0034F84C

函數(shù)的參數(shù)引用

許多教程在講解參數(shù)引用時(shí)都喜歡選擇交換兩參數(shù)內(nèi)容的swap(int &x, int &y)函數(shù)作例子,這的確很容易說(shuō)明清楚,,但并不能說(shuō)這種用法優(yōu)于指針作參數(shù),。
  1. #include <iostream>
  2. using namespace std;
  3. //|右邊為指針作參數(shù)的代碼,僅作比較用,。
  4. void swap(int &x, int &y); //|void swap(int *x, int *y);
  5. //|
  6. int main ( ) //|
  7. { //|
  8. int i = 12; //|
  9. int j = 25; //|
  10. cout << "i=" << i << " j=" << j << endl; //|
  11. //|
  12. swap(i, j); //|swap(&i, &j);
  13. cout << "i=" << i << " j=" << j << endl; //|
  14. //|
  15. return 0; //|
  16. } //|
  17. //|
  18. void swap(int &x, int &y) //|void swap(int *x, int *y)
  19. { //|{
  20. int t; //| int t;
  21. //|
  22. t = x; //| t = *x;
  23. x = y; //| *x = *y;
  24. y = t; //| *y = *x;
  25. } //|}
運(yùn)行結(jié)果:
i=12    j=25
i=25    j=12

對(duì)象引用作參數(shù)

初學(xué)者可以先跳過(guò)這一節(jié),,待學(xué)完“類”之后再來(lái)看。
  1. #include <iostream>
  2. using namespace std;
  3. class myclass {
  4. int who;
  5. public:
  6. myclass(int n) {
  7. who = n;
  8. cout << "構(gòu)造函數(shù)調(diào)用" << who << endl;
  9. }
  10. ~myclass() {
  11. cout << "析構(gòu)函數(shù)調(diào)用" << who << endl;
  12. }
  13. int id() {
  14. return who;
  15. }
  16. };
  17. void f1(myclass o) { //普通變量方式傳遞參數(shù)
  18. cout << "外部函數(shù)調(diào)用" << o.id() << endl;
  19. }
  20. void f2(myclass *o) { //指針?lè)绞絺鬟f參數(shù)
  21. cout << "外部函數(shù)調(diào)用" << o->id() << endl;
  22. }
  23. void f3(myclass &o) { //引用方式傳遞參數(shù)
  24. cout << "外部函數(shù)調(diào)用" << o.id() << endl;
  25. }
  26. int main ( )
  27. {
  28. myclass x1(1);
  29. f1(x1);
  30. cout << "-------" << endl;
  31. myclass x2(2);
  32. f2(&x2);
  33. cout << "-------" << endl;
  34. myclass x3(3);
  35. f3(x3);
  36. cout << "-------" << endl;
  37. return 0;
  38. }
運(yùn)行結(jié)果:


從上面例子可以看出,,用普通變量方式傳遞參數(shù)時(shí),,函數(shù)首先將參數(shù)復(fù)制一個(gè)副本,在函數(shù)體內(nèi)使用的是副本,。這個(gè)副本和參數(shù)自身不是同一個(gè)地址,。而指針?lè)绞胶鸵梅绞讲⒉划a(chǎn)生副本,函數(shù)體內(nèi)用的真是參數(shù)自身,。需要注意的是,,產(chǎn)生副本時(shí)調(diào)用了類的缺省“拷貝構(gòu)造函數(shù)”,這個(gè)“拷貝構(gòu)造函數(shù)”并不調(diào)用構(gòu)造函數(shù)就產(chǎn)生了一個(gè)副本,,有關(guān)詳細(xì)內(nèi)容參見(jiàn)后面章節(jié),。

作為函數(shù)返回值的引用類型

下面的代碼略有深度,初學(xué)者如果無(wú)法理解請(qǐng)?zhí)^(guò)。請(qǐng)先看下面的程序,,有沒(méi)有問(wèn)題,?
  1. #include <iostream>
  2. using namespace std;
  3. int &f();
  4. int x;
  5. int main ( )
  6. {
  7. f() = 100;
  8. cout << x << endl;
  9. return 0;
  10. }
  11. int &f()
  12. {
  13. return x;
  14. }
許多人都認(rèn)為第9句錯(cuò)了,少數(shù)人認(rèn)為第4句可能有問(wèn)題,。事實(shí)上,這個(gè)程序完全正確,。

上面這個(gè)函數(shù)的返回值是引用類型,,通過(guò)函數(shù)結(jié)果的設(shè)置反過(guò)來(lái)去改變“源頭”數(shù)據(jù),這種“逆向引用”為C++增強(qiáng)了很多功能,,當(dāng)然也有許多需要注意的地方,。

由于本教程面向初學(xué)者,因此到此為止,,不再深入下去,,,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多