先看一个例子:
#include <iostream>
class A
{
public:
A() { ::std::cout << "constructor: A" << ::std::endl; } // 构造函数不能为 virtual
A(int aa): a(aa) { ::std::cout << "constructor: A, a = " << a << ::std::endl; }
virtual ~A() { ::std::cout << "destructor: A" << ::std::endl; }
public:
int a;
};
class B : public A
{
public:
B() { ::std::cout << "constructor: B" << ::std::endl; }
B(int bb) : b(bb) { ::std::cout << "constructor: B, b = " << b << ::std::endl; }
B(int aa, int bb): A(aa), b(bb) { ::std::cout << "constructor: B, a = " << a << ", b = " << b << ::std::endl; }
~B() { ::std::cout << "destructor: B" << ::std::endl; }
public:
int b;
};
class A2
{
public:
A2() { ::std::cout << "const