例子解析C++的引用,傳參,const的相關特點
/*-----------------------------------------
引用是被引用者的別名,本身不佔記憶體,主要功能用於傳參,
其免複製特性使得用函式時減少記憶體消耗並提高速度;
引用和"&的取地址"是完全兩回事!
---------------------------------------------*/
#include <iostream>
#include <stddef.h>
using namespace std;
class A
{
public:
int a; //4個位元組
int b; //4個位元組
};
void change1(const A &gg) //(還可以寫成(const A& gg))
{
// gg.a+=10; //const的作用就是,引用無法修改原物件.所以這兩句會報錯
// gg.b+=33; //相當於const將引用變為只讀
cout<<gg.a<<" "; //就算有const,不能改動,但能讀
cout<<sizeof(gg); //引用只是被引用者的別名,此處輸出8
}
void change2(A gg)//普通傳參
{
gg.a+=10;
gg.b+=33;
}
void change3(A& gg)//引用傳參
{
gg.a+=10;
gg.b+=33;
}
int main()
{
A shuogg;
shuogg.a=0;
shuogg.b=0;
cout<<sizeof(shuogg);//輸出:8 (說明shuogg不是指標,而是一個大資料塊)
change1(shuogg); //輸出:0 8(說明引用也不是指標,而是shuogg的別名)
change2(shuogg);//此函式就是先複製一份shuogg到gg,執行完函式後釋放,無法修改shuogg的a,b值
cout<<shuogg.a<<" "<<shuogg.b<<" ";//輸出:0 0
change3(shuogg);//引用傳參不會複製的,功能和指標相似,故函式結束可以改動shuogg
cout<<shuogg.a<<" "<<shuogg.b<<" ";//輸出:10 33
return 0;
}
相關文章
- 關於C/C++ const變數 const指標 以及C++ 引用變數的解析C++變數指標
- C++ const面試題和相關的解釋C++面試題
- 引用的例子 C C++ 中區別C++
- JAVA值傳參和引用傳參Java
- C++的特點C++
- 關於C++引用的一些注意點C++
- C++中const與指標、引用的總結C++指標
- C++中的 const 關鍵字C++
- vuex給getter傳參的官方例子解讀Vue
- 關於C++ const 的全面總結C++
- SCN的相關解析
- 何時以引用方式傳參
- 引數傳遞方式必須是const引用傳遞
- var、let、const變數宣告的區別及特點變數
- 細學C++之C++語言的特點C++
- c/c++ const關鍵字C++
- 關於java的引用和c++的區別JavaC++
- Golang中函式傳參存在引用傳遞嗎?Golang函式
- C++基礎——有關引用的問題C++
- const指標的引用指標
- 關於值傳遞和引用傳遞的解釋
- 關於const修飾的引用作為引數傳遞和non-member, non-friend函式函式
- C++中const的用法C++
- C/C++中的constC++
- C++中const的妙用C++
- C++ const常量的理解C++
- C++引用全部知識點C++
- 2021年A特種裝置相關管理(電梯)答案解析及A特種裝置相關管理(電梯)找答案
- 關於Ruby的語言特點
- C++中類相關知識點總結C++
- 斷點續傳教學例子斷點
- Vue專案中路由動態傳參功能相關實現Vue路由
- hadoop主要的一些特點及相關領域發展狀態Hadoop
- Java關於檔案上傳的一個例子Java
- C++ const int * ; int * constC++
- 常量引用或指向常量的指標,其所指物件可以是非const物件(C++)指標物件C++
- 2020年A特種裝置相關管理(電梯)答案解析及A特種裝置相關管理(電梯)模擬試題
- C++ 中的 const 物件與 const 成員函式C++物件函式