- 相關(guān)推薦
C++返回對象和返回引用
引用的本質(zhì)是對裸露的地址的二次包裝,它實際返回的還是一個變量或?qū)ο蟮牡刂罚虼巳绻祷匾貌豢梢苑祷鼐植孔兞康模驗楹瘮?shù)在返回之后,該變量就銷毀。下面是其C++返回對象和返回引用,一起來學習下吧:
代碼是對運算符*進行重載,返回引用和返回對象有不同的結(jié)果。
[cpp] view plain copy#include
using namespace std;
class A
{
public:
A() { cout << "A::A()" << endl;}//A構(gòu)造函數(shù)
A(A& another){cout << "A(A& another)" << endl;}
~A(){ cout << "~A::A()" << endl;}//A析構(gòu)函數(shù)
void func(){ cout << "class A::void func()" << endl;}
};
class B
{
public:
B(A* p) :_p(p){cout << "B::B()" << endl;}//B構(gòu)造函數(shù)
~B(){ cout << "~B::B()" << endl; }//B析構(gòu)函數(shù)
A operator*(){ //運算符重載*
return *_p;
}
private:
A* _p;
};
int main(){
A p1;
B p2(&p1);
(*p2).func();
return 0;
}
中,返回的是A類的對象,之后會調(diào)用A中的拷貝構(gòu)造器
A(A& another);
即用*_p的值作為參數(shù),在內(nèi)存中構(gòu)造一個新的對象,但它沒有名字,是無名對象,之后運行該無名對象中的func()函數(shù),運行完后,這個一次性的無名對象就會銷毀,即調(diào)用析構(gòu)函數(shù)。
同時,返回對象的話也不能在后續(xù)對它進行左值運算,編譯器通不過而且也毫無意義,因為之后程序員是沒法訪問到這個無名變量的
僅此個人觀點,有問題歡迎指正。
【 C++返回對象和返回引用】相關(guān)文章:
Java中對象和引用的具體區(qū)別05-18
網(wǎng)頁點擊按鈕返回頂部代碼11-05
C語言返回多個值的方法07-07
C語言函數(shù)返回值解析09-17
Excel添加超鏈接返回主界面10-23
Excel添加超鏈接返回主界面按鈕11-01
C語言中返回字符串函數(shù)的實現(xiàn)方法09-19
Win8如何設置讓計算機圖標返回桌面08-08