コードは、どのように正確に動作するかを理解するために作成したテストです。この行動は予期しないものです。 「作成済み」と「削除済み」が何回表示されるか知っていれば、私はしませんでした。 質問はそれがなぜ同じように行われているのでしょうか、違いはありませんか?コンストラクタとデストラクタの間の "予期しない"ペアリング。なぜそれはそれのように動作する必要がありますか?
struct A{
int a=0x10;
A(){std::cout<<"A created"<<std::endl;}
~A(){std::cout<<"A deleted"<<std::endl;}
};
void test0(A a1,A a2){
std::cout<<"test0"<<" a1="<<a1.a<<" a2="<<a2.a<<std::endl;
}
void test1(const A a1,const A a2){
std::cout<<"test1"<<" a1="<<a1.a<<" a2="<<a2.a<<std::endl;
}
int main(int argc, char **argv)
{
A a,b;
test0(a,b);
test1(a,b);
}
あなたが何を求めているのか分かりません。期待された行動は何でしたか?そして実際の行動は何でしたか? – chris
私は、コンストラクタがデストラクタと同じくらい何回も実行されていると思いました。 –
期待どおりの動作と観察された動作を追加する必要があります。 –