在C++中,一个类A有一个成员是另一个类B的一个对象,如何对A进行初始化?是否还有其它方法?

2025-03-03 17:47:53
推荐回答(2个)
回答1:

你问的是不是这个意思:
class B
{
public:
B();
virtual ~B();
};

class A
{
public:
A();
virtual ~A();

B objB;//声明一个B的对象
}

若照上面的理解,对A的初始化应该放在构造函数中进行,但B的构造函数会在A的之前被执行。基本上,若不牵扯内存的分配等复杂问题,可以在默认的构造函数里添加你的初始化的代码。

回答2:

#include
class B
{
public:
int m_i;
};

class A
{
public:
B myB;
A(int m)
{
myB.m_i=m;
}
};

void main()
{
A myA(10);
cout<}
这是测试程序,在构造A类对象的时候,内部已经完成了对B类对象的构造。

另一种情况的处理办法
#include "iostream.h"

class B{
public:
int m_i;
B(int m)
{
this->m_i=m;
}

B()
{
m_i=NULL;
}

};

class A{
public:
int m_i;
B myB;
A(int m,int n)
{
m_i=m;
myB=B(n);
}
};

void main()
{
A myA(10,100);
cout<}