「A」のオブジェクトを取得する関数があります。それはfunc
. Bの対象でお届けします。
B のコンストラクターをアクティブにすべきではありませんか? Aのオブジェクトを送信する必要があるのに、Bのオブジェクトを送信する原因.この関数が出力する理由が本当にわかりません:
A()
DESTRUCTOR A
ではない:
CONSTRUCTOR A
CONSTRUCTOR B
B()
DESTRUCTOR B
DESTRUCTOR A
get と not があるため、オブジェクト B を乗算する必要func
はA a
ありませんA& a
か?
これは私のコードです:
class A
{
public:
A() { cout << "CONSTRUCTOR A\n"; }
~A() { cout << "DESTRUCTOR A\n"; }
virtual void f() { cout << "A()" << endl; }
};
class B: public A
{
public:
B() { cout << "CONSTRUCTOR B\n"; }
~B() { cout << "DESTRUCTOR B\n"; }
virtual void f() { cout << "B()" << endl; }
};
void func(A a) {
a.f();
}
int main() {
B b;
func(b);
return 0;
}