0
當我在下面的代碼中調用f1時,是否應該調用構造函數? 我看到「this」指針在對象b(參數爲f1)中是不同的,這意味着創建了一個新對象,但是我沒有看到b的構造函數中的打印。 但是有調用析構函數,任何人都可以解釋嗎?在VC 2012所示將對象傳遞給函數不會導致構造函數調用
class A
{
int k ;
public:
A(int i)
{
k=i;
printf("%d inside [%s]ptr[%p]\n",k,__FUNCTION__,this);
}
~A()
{
printf("%d inside [%s]ptr[%p]\n",k,__FUNCTION__,this);
}
void A_fn()
{
printf("%d inside [%s]ptr[%p]\n",k,__FUNCTION__,this);
}
};
void f1(A b)
{
b.A_fn();
}
int _tmain(int argc, _TCHAR* argv[])
{
A a(10);
f1(a);
return 0;
}
輸出:
10 inside [A::A]ptr[00B3FBD0]
10 inside [A::A_fn]ptr[00B3FAEC]
10 inside [A::~A]ptr[00B3FAEC]
10 inside [A::~A]ptr[00B3FBD0]
Press any key to continue . . .
添加在拷貝構造函數的註釋和檢查... – Nipun