作者mathan (None)
看板Programming
标题[问题] C++从函数返回一个区域物件时constructor的被呼叫时机
时间Sat May 16 17:30:54 2009
对於下列的程式
1 //宣告class C
2 class C{
3 ...
4 };
5 //f函数
6 C f(){
7 C c;
8 return c;
9 }
10
11 int main(int argc, char **argv){
12 C c1=f();
13 return 0;
14 }
请问一下
第8行的return叙述会导致新的C物件额外产生吗?因此C的constructor再被再呼叫?
第7行宣告的c它的 destructor会何时被呼叫(a.)离开f()时 (b.)还是离开main时
感谢回覆
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.232.241.63
1F:→ akasan:可能会被呼叫 也有可能不会218.165.171.114 05/16 17:46
2F:→ akasan:完全看compiler实作与最佳化程度了218.165.171.114 05/16 17:46
3F:→ akasan:google it -> NRV optimize218.165.171.114 05/16 17:47
4F:→ th19883617:就我所知 若不是用pointer或refernce 140.113.249.9 05/16 21:07
5F:→ th19883617:他会呼叫class预设复制建构子 140.113.249.9 05/16 21:07
6F:→ adrianshum:另,7 的 c 该在 f() 完结被 destruct 220.246.198.75 05/17 21:10
7F:→ adrianshum:不过 NRV 的情况该还会再迟一点点 220.246.198.75 05/17 21:10