參數傳遞(引用,指針,值傳遞)C++11

C++中,函數的參數傳遞方式有值傳遞、地址傳遞。傳地址有指針和引用方式。
在函數參數中,傳地址的理由有:
1.使被調函數可以修改主調函數中的數據對象;
2.傳地址可以減少數據拷貝,提高程序執行速度。

那麼,何時使用值傳遞,何時使用地址傳遞(指針和引用)?
下面是一些寫代碼時會遇到的一些情況

被調函數使用參數對象時,不會修改數據對象

  1. 如果要傳入函數的數據對象較小,比如是內建數據類型或小規模的結構體,那麼使用值傳遞;
  2. 如果數據對象是數組,那麼使用指針(這也是你唯一的選擇)。指針添加const修飾;
  3. 如果數據對象是大規模的結構體,使用const指針或const引用;
  4. 如果數據對象是class對象,使用const引用。這也是C++中傳遞class對象的標準做法;

被調函數使用參數對象時,會修改數據對象

  1. 數據對象是內建數據類型,使用指針(func(&var)表明函數中要修改var,比使用引用的調用形式func(var)可讀性好);
  2. 數據對象是數組,指針是唯一的選擇;
  3. 數據對象是結構體,使用指針或引用;
  4. 數據對象是class對象,使用引用;

當然,以上只是一般情況。特殊情況另外討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章