class Base
{
public:
Base()
{
cout << "Base()" << endl;
}
Base(const Base&)
{
cout << "Base(const Base&)" << endl;
}
~Base()
{
cout << "~Base()" << endl;
}
};
class Derived : public Base
{
public:
Derived()
{
cout << "Derived()" << endl;
}
Derived(const Derived&)
{
cout << "Derived(const Derived&)" << endl;
}
~Derived()
{
cout << "~Derived()" << endl;
}
};
int main(void)
{
vector<Base> vec;
Base obase;
Derived oderived;
vec.push_back(obase);
vec.push_back(oderived);
return 0;
}
结果:
Base()
Base()
Derived()
Base(const Base&)
Base(const Base&)
Base(const Base&)
~Base()
~Derived()
~Base()
~Base()
~Base()
~Base()
为什么会调用三次拷备构造函数呢?