#include <stdio.h>
#include <iostream>
using namespace std;
class A
{
public:
A()
{
puts("In A");
}
~A()
{
puts("Out A");
}
};
class B
{
public:
B()
{
puts("In B");
}
~B()
{
puts("Out B");
}
};
class X
{
public:
X()
{
puts("In X");
}
~X()
{
puts("Out X");
}
virtual void test()
{
cout<<"test in X"<<endl;
}
};
class C:public X
{
public:
C():b(),a()
{
puts("In C");
}
~C()
{
puts("Out C");
}
virtual void test()
{
cout<<"test in C"<<endl;
}
private:
B b;
A a;
};
void test(A a)
{
}
int main()
{
X * p = new C;
p->test();
delete p;
//A a; // 调用默认构造函数和析构函数
//test(a); // 这个会调用默认复制构造函数和析构函数!
return 0;
#include <iostream>
using namespace std;
class A
{
public:
A()
{
puts("In A");
}
~A()
{
puts("Out A");
}
};
class B
{
public:
B()
{
puts("In B");
}
~B()
{
puts("Out B");
}
};
class X
{
public:
X()
{
puts("In X");
}
~X()
{
puts("Out X");
}
virtual void test()
{
cout<<"test in X"<<endl;
}
};
class C:public X
{
public:
C():b(),a()
{
puts("In C");
}
~C()
{
puts("Out C");
}
virtual void test()
{
cout<<"test in C"<<endl;
}
private:
B b;
A a;
};
void test(A a)
{
}
int main()
{
X * p = new C;
p->test();
delete p;
//A a; // 调用默认构造函数和析构函数
//test(a); // 这个会调用默认复制构造函数和析构函数!
return 0;
}
输出:
In X
In B
In A
In C
test in C
Out X