我有一个获取'A'对象的函数,它被称为:func
。我给它发送一个 B 的对象。
它不应该激活B的构造函数吗?因为我发送了一个 B 的对象,尽管我必须发送一个 A 的对象。我真的不知道为什么这个函数会打印:
A()
DESTRUCTOR A
并不是:
CONSTRUCTOR A
CONSTRUCTOR B
B()
DESTRUCTOR B
DESTRUCTOR A
它不是必须乘以对象 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;
}