函數的參數爲對象本身和對象的引用【函數參數爲引用】

不一樣,一個是複製傳遞,一個是引用傳遞。
複製傳遞時將對象複製一遍,在函數中的對象和原對象值相同,但是地址不同,函數中若修改對象的值,原對象不會受到影響,當函數執行完時,複製的對象會被銷燬。
而引用傳遞不會複製,只是將原對象的地址傳過去,類似指針。此時函數中的對象和原對象是一個東西,相同的地址,可能名字不一樣而已。
一般傳遞對象時使用的是引用傳遞,效率更高。對象一般比較大,複製的話銷燬的時間較多。如要防止函數修改參數,可以使用const 引用。
附個演示代碼,你就知道了。

#include <iostream>

using namespace std; class A{     public:         void set(int data)         {             this->data =data;         }         void show()         {             cout << data <<endl;         }     private:         int data; }; void change(A a, A &b) {     a.set(3);     b.set(3); } int main() {    A a, b;    a.set(1);    b.set(1);    cout <<"before"<<endl;    a.show();    b.show();    change(a,b);    cout<<"after"<<endl;    a.show();    b.show();    cout << "Hello World" << endl;       return 0; }

 

The result is:

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