不能在构造函数体中调用其他的构造函数,这等于是临时构造了一个Teacher后又丢弃了它。
可以使用默认参数来实现无参构造函数调用有参构造函数
#include <iostream>
using namespace std;
class Base
{
public:
Base()
{
cout<<"construct Base"<<endl;
}
~Base()
{
cout<<"distruct Base"<<endl;
};
virtual void print() = 0;
};
class A : public Base
{
public:
A(int* a = NULL, int* b = NULL):ma(a),mb(b)
{
if(ma== NULL)
{
ma = new int(10);
}
if(mb== NULL)
{
mb = new int(100);
}
cout<<"construct A"<<endl;
};
~A()
{
cout<<"distruct A"<<endl;
};
void print()
{
cout<<"ma"<<*ma<<endl;
cout<<"mb"<<*mb<<endl;
}
public:
int* ma;
int* mb;
};
int main()
{
int* p1 = new int(11);
int* p2 = new int(22);
Base *pb = new A(p1,p2);
pb->print();
Base *pb2 = new A();
pb2->print();
//A *pa = new A(1,2);
delete pb;
cout << "Hello World";
return 0;
}