-2
爲什麼類A的構造函數在該類的對象作爲參數傳遞給按參數值傳遞參數時未被調用?爲什麼構造函數不被調用?
class A
{
public:
A()
{
cout << "A\n";
}
};
void f_n(A val)
{
}
int main()
{
A a;
f_n(a);
return 0;
}
爲什麼類A的構造函數在該類的對象作爲參數傳遞給按參數值傳遞參數時未被調用?爲什麼構造函數不被調用?
class A
{
public:
A()
{
cout << "A\n";
}
};
void f_n(A val)
{
}
int main()
{
A a;
f_n(a);
return 0;
}
這是因爲在此上下文中使用了複製構造函數。要檢查它添加明確的實現:
A(A const&)
{
std::cout << "A const&\n";
}
你還沒有定義一個,但編譯器爲你合成複製構造函數。但沒有生成時有cases。
因爲複製構造函數被調用。 - 見https://ideone.com/vmI74w –
你怎麼知道一個構造函數沒有被調用? – juanchopanza