亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1469 | 回復: 5
打印 上一主題 下一主題

復制構(gòu)造函數(shù),這個地方不明白 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-07-03 23:55 |只看該作者 |倒序瀏覽
#include <iostream>
using namespace std;
class A
{public:
A(){cout<<"構(gòu)造函數(shù),創(chuàng)建對象\n";}
A(A&){cout<<"復制構(gòu)造函數(shù)!創(chuàng)建副本!\n";}
~A(){cout<<"執(zhí)行析構(gòu)函數(shù)!\n";}

};

A func(A one)//返回值是一個類A的對象
{

return one;

}
main()
{
        A a;
        func(a);
}
A(A&){cout<<"復制構(gòu)造函數(shù)!創(chuàng)建副本!\n";}這個A(A&)是什么意思?在main()函數(shù)里傳遞的是a的值,但是a是個對象,哪里來的值呢?如果要是func(&a)這個還是很好理解的,傳遞的是a對象的首地址,但是a對象值是什么?

論壇徽章:
0
2 [報告]
發(fā)表于 2009-07-04 00:15 |只看該作者
1,A(A&)就是拷貝構(gòu)造函數(shù),傳遞引用,如:
   A a1;
    A  a2(a1);  //使用a1進行拷貝構(gòu)造。
2,值傳參,你可以把類對象看成是一個結(jié)構(gòu)體就明白了。

論壇徽章:
0
3 [報告]
發(fā)表于 2009-07-04 00:23 |只看該作者
A(A&) { ... } // pass the reference of an object of type A as the parameter

A a; // an object is created

func(a); // pass the object created as the parameter

論壇徽章:
0
4 [報告]
發(fā)表于 2009-07-04 00:37 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
5 [報告]
發(fā)表于 2009-07-04 00:59 |只看該作者
仔細!仔細!
引用!引用!

小心無大錯,尤其是在程序設計這個高度要求邏輯性的領(lǐng)域中。

&a 和 a& 這兩種寫法具有不同的語義。前者表示獲得 a 的地址,而后者用在參數(shù)聲明中,表示傳入的是引用,非原對象的一份拷貝。

指針和引用具有本質(zhì)區(qū)別。難以理解?假定你接觸過 Unix 文件系統(tǒng):

如果把指針比作符號鏈接,那么引用就是硬鏈接。

----

C++ 的表現(xiàn)力遠遠大于 C,當然這是要付出代價的,代價就是使用者需要花更多的時間理解,在理解之前還會碰很多的壁。

論壇徽章:
0
6 [報告]
發(fā)表于 2009-07-04 12:51 |只看該作者
A(A&){cout<<"復制構(gòu)造函數(shù)!創(chuàng)建副本!\n";}
好像是深拷貝吧
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP