#include <iostream>
using namespace std;
using std::ostringstream;
class A
{
public:
// A() { x = 0; cout << "x = " << x << endl; }
A(int a) : x(a) { cout << "x = " << x << endl; }
private:
int x;
};
class B
{
private:
A oa;
int y;
public:
// B() { y = 0; cout << "B y = " << y << endl; }
B(int x, int b, int c) : oa(x), y(b) , tag_C(c)
{ cout << "B y = " << y << endl;}
class C
{
private:
int m;
public:
C(int a) : m(a) { cout << "C m = " << m << endl; }
}tag_C;
};
int main(int argc, const char **argv)
{
// B a;
B b(1, 2, 3);
return 0;
}
以上代码中B类包含一个A类的对象,由于在构造B类的时候给oa传入了参数,就会调用A相应的构造函数,来构造A对象。
B类包含一个内部类C,可以通过tag_C直接构造C的对象。
代码输出: