我有一个函数获取'A'的对象,它被称为:func
。我发送它的一个对象B.发送一个儿子而不是父亲的对象
不应该激活B的构造函数吗?因为我送B的对象,虽然我要送A的对象我真的不知道为什么这个函数打印:
A()
DESTRUCTOR A
,而不是:
CONSTRUCTOR A
CONSTRUCTOR B
B()
DESTRUCTOR B
DESTRUCTOR A
没有它具有因为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;
}
它与切片有关吗? – 2013-05-05 17:28:42
是啊!绝对 – Aryan 2013-05-05 17:36:42