在C++中,一个类A有一个成员是另一个类B的一个对象,如何对A进行初始化?是否还有其它方法?
发布网友
发布时间:2022-05-31 18:17
我来回答
共2个回答
热心网友
时间:2023-10-22 05:31
你问的是不是这个意思:
class B
{
public:
B();
virtual ~B();
};
class A
{
public:
A();
virtual ~A();
B objB;//声明一个B的对象
}
若照上面的理解,对A的初始化应该放在构造函数中进行,但B的构造函数会在A的之前被执行。基本上,若不牵扯内存的分配等复杂问题,可以在默认的构造函数里添加你的初始化的代码。
热心网友
时间:2023-10-22 05:31
#include <iostream.h>
class B
{
public:
int m_i;
};
class A
{
public:
B myB;
A(int m)
{
myB.m_i=m;
}
};
void main()
{
A myA(10);
cout<<endl<<myA.myB.m_i<<endl;
}
这是测试程序,在构造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<<myA.myB.m_i<<endl<<myA.m_i;
}