021742
心要存高遠,行才有信心!
C++博客
首頁
新文章
聯(lián)系
聚合
管理
posts - 3, comments - 28, trackbacks - 0
[討論]臨時對象有地址么?
?
class
?A
{
private
:
????
int
?i;
public
:
????A(
int
?ii):i(ii)
{}
//
cout<<i<<"??A()?"<<endl;
????A():i(
0
)
{}
????
~
A()
{cout
<<
"
~A(
"
<<
i
<<
"
)?
"
<<
endl;}
????
const
?A?
operator
?
+
(
const
?A?
&
r)?
const
????
{
????????
return
?A(i
+
r.i);
????}
}
;
int
?main()
{
????
int
?i
=
10
,j
=
20
;
????
//
cout<<&(i+j)<<endl;??????????
//
這里為什么會出錯呢?
????A?a1(
10
),a2(
20
),a3(
30
),a4(
40
);
????cout
<<&
(a1
+
a2)
<<
endl;???????
//
這里就應(yīng)該是臨時變量的地址了吧
????system(
"
pause
"
);
????
return
?
0
;
}
既然這樣可以運行,那為什么內(nèi)置的類型如:int float之類的不能取臨時對象的值呢?
我重載的+號運算符應(yīng)該沒有寫錯吧、、
請大家指教。。謝謝我還只是一個初學(xué)者
posted on 2006-02-12 22:12
豬頭餅
閱讀(1011)
評論(10)
編輯
收藏
引用
所屬分類:
C++
FeedBack:
#
re: [討論]臨時對象有地址么?
2006-02-13 00:05 |
音樂蟲子
i+j得到的是一個值,不存在你說說的臨時對象
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?
2006-02-13 00:19 |
梅阿查沒有眼淚
謝謝你的回復(fù)
那么:
int foo()
{
return 10+20; //這個應(yīng)該返回的是一個臨時對象了吧
}
//下面為什么這里還是會出錯呢?
cout<<&foo();
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?
2006-02-13 09:50 |
蟲子
int是值類型,不是類類型
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?
2006-02-13 11:07 |
小明
int foo()
{
return 10+20; //這個應(yīng)該返回的是一個臨時對象了吧
}
如果你懂一些匯編,vc中,這個函數(shù)返回的時候,只是把結(jié)果30放到EAX
mov eax ,30
并不生成一個臨時對象
調(diào)用者也只是從EAX中取得這個值
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?
2006-02-13 13:46 |
梅阿查沒有眼淚
在C++中真正的臨時對象是看不見的,它們不出現(xiàn)在你的源代碼中。建立一個沒有命名的非堆(non-heap)對象會產(chǎn)生臨時對象。這種未命名的對象通常在2種條件下產(chǎn)生:
1:為了使函數(shù)成功調(diào)用而進行隱式類型轉(zhuǎn)換
由于對于臨時對象的概念還沒有搞清楚,在些貽笑大方了
void foo(const int & i)
{
cout<<&i<<endl;
}
float f=3.14;
foo(f);//這里應(yīng)該是正確的打印出這個臨時對象的地址了吧。
2:函數(shù)返回對象時
int foo()
{
return 10+20; //這個是不是編譯器對些做出的一些優(yōu)化而沒有產(chǎn)生臨時對象呢
}
謝謝各位指導(dǎo)
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?
2006-02-13 18:01 |
hdqqq1
讓編譯器生成匯編就可以清楚了.
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?
2006-02-22 02:27 |
挺c++
1.返回局部對象(你的A(i+r.i))時,編譯器調(diào)用A的拷貝構(gòu)造函數(shù),又復(fù)制了一個A,因而得到了你所謂的臨時對象.但是這樣效率比較低.
2.你的那個函數(shù)foo()里面的常數(shù)加法10+20實際上是在編譯期執(zhí)行的.簡單的返回值vc直接寫到eax里面了.就是樓上仁兄說的mov eax,30就搞定.
3.你的原來那個式子里面,i+j這樣的簡單運算也是在寄存器中完成的. i+j會編譯為:
mov eax, dword ptr [i]
add eax, dword ptr [j]
如果沒有進一步的賦值語句,怎么獲取地址?
實際上,如果一個語句就僅僅是:i+j;
那么編譯器優(yōu)化后根本不為這條語句生成任何代碼.
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?
2006-03-12 00:09 |
amazement
對于取地址符號&在匯編中的實現(xiàn)是這樣的:1,必須將該數(shù)壓入到為程序分配的堆棧之中,如 push %eax. 2 然后通過對幀指針%ebp的定位,如leal 8(%ebp),%ebx(lea 為load effective address,8(%ebp)意思是將%ebp+8),那么現(xiàn)在%ebx中存儲的就是該數(shù)值的地址了.
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?
2006-03-12 00:13 |
amazement
對于取地址符號&在匯編中的實現(xiàn)是這樣的:1,必須將該數(shù)壓入到為程序分配的堆棧之中,如 push %eax. 2 然后通過對幀指針%ebp的定位,如leal 8(%ebp),%ebx(lea 為load effective address,8(%ebp)意思是將%ebp+8),那么現(xiàn)在%ebx中存儲的就是該數(shù)值的地址了.按照程序的情況來看,對于那個 int 的臨時變量沒有壓入堆棧.
回復(fù)
更多評論
#
re: [討論]臨時對象有地址么?[未登錄]
2007-05-31 13:48 |
塌塌方
cout<<&(i+j)....錯是因為i+j只是一個值沒有分配內(nèi)存所以不存在地址
下面也不對了
回復(fù)
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright ©2025 豬頭餅 Powered by:
博客園
模板提供:
滬江博客
<
2006年2月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
C++(1)
其他
算法/數(shù)據(jù)結(jié)構(gòu)(2)
隨筆檔案
2007年3月 (1)
2006年11月 (1)
2006年2月 (1)
搜索
積分與排名
積分 - 7379
排名 - 1349
最新評論
1.?re: 一道算法面試題,大家討論看看[未登錄]
評論內(nèi)容較長,點擊標(biāo)題查看
--湯
2.?re: [討論]臨時對象有地址么?[未登錄]
cout<<&(i+j)....錯是因為i+j只是一個值沒有分配內(nèi)存所以不存在地址
下面也不對了
--塌塌方
3.?re: 一道算法面試題,大家討論看看
評論內(nèi)容較長,點擊標(biāo)題查看
--塌塌方
4.?re: 一道算法面試題,大家討論看看
評論內(nèi)容較長,點擊標(biāo)題查看
--豬頭餅
5.?re: 一道算法面試題,大家討論看看
評論內(nèi)容較長,點擊標(biāo)題查看
--BearBlog
閱讀排行榜
1.?一道算法面試題,大家討論看看(3739)
2.?KMP算法資料(1517)
3.?[討論]臨時對象有地址么?(1011)
評論排行榜
1.?一道算法面試題,大家討論看看(18)
2.?[討論]臨時對象有地址么?(10)
3.?KMP算法資料(0)
国产精品丝袜久久久久久不卡
|
无码久久精品国产亚洲Av影片
|
久久久中文字幕
|
久久久99精品成人片中文字幕
|
久久精品一本到99热免费
|
日韩精品久久无码人妻中文字幕
|
久久精品国产99国产精偷
|
日韩电影久久久被窝网
|
AV狠狠色丁香婷婷综合久久
|
久久高清一级毛片
|
国产亚洲精久久久久久无码
|
一本色道久久88综合日韩精品
|
国产午夜免费高清久久影院
|
国产精品99久久久久久宅男小说
|
国产精品久久一区二区三区
|
久久久久久亚洲精品无码
|
久久久久久人妻无码
|
亚洲欧美久久久久9999
|
丰满少妇人妻久久久久久4
|
国产69精品久久久久APP下载
|
亚洲国产成人久久综合一
|
久久精品国产亚洲AV不卡
|
精品久久久久久无码人妻热
|
久久精品人人做人人妻人人玩
|
精品久久久无码人妻中文字幕
|
久久亚洲2019中文字幕
|
久久香蕉国产线看观看99
|
久久综合给合久久狠狠狠97色69
|
久久无码国产
|
久久只有这精品99
|
久久一区二区免费播放
|
久久久久国产一级毛片高清板
|
久久综合九色综合精品
|
久久亚洲国产欧洲精品一
|
99精品久久精品
|
亚洲一本综合久久
|
成人精品一区二区久久
|
精品国产91久久久久久久a
|
91精品国产色综久久
|
国产成人AV综合久久
|
国产精品美女久久久网AV
|