当派生类继承了基类,并且类中有基类对象作为成员变量时,构造函数的调用顺序是怎样的呢?
看下面的程序:
派生类继承了两个基类A和B,主函数里定义了一个派生类对象:
#include <iostream>
using namespace std;
class A
{
public:
int x , y;
char *p;
public:
A(int ix , int iy)
{
x = ix ;
y = iy;
p = new char[10];
cout<<"调用A的有参构造函数"<<endl;
}
A():x(0),y(0),p(NULL)
{
cout<<"调用A的无参构造函数"<<endl;
}
A(A &a)
{
x = a.x;
y = a.y;
delete []p;
p = NULL;
p = new char[strlen(a.p) + 1];
strcpy(p , a.p);
cout<<"调用A的复制(拷贝)构造函数"<<endl;
}
A & operator=(A &a)
{
if(this == &a)
return *this;
x = a.x;
y = a.y;
delete []p;
p = NULL;
p = new char[strlen(a.p) + 1];
strcpy(p , a.p);
cout<<"调用A的赋值函数"<<endl;
return *this;
}
virtual ~A()
{
if(p)
{
delete