Это основной вопрос владения.Если каждый A
должен иметь B
(например, при создании A
должен быть создан новый B
, который также должен быть уничтожен при уничтожении A
, тогда вы обычносделайте A
ответственным за создание и уничтожение экземпляра B:
class B {
int num;
public:
B(int x) : num(x) {}
};
class A {
B *obj;
public:
A(int value) : obj(new B(value)) {}
~A() { delete B; }
};
В этом случае, однако, весьма велики шансы, что A
следует просто записать так:
class A {
B obj;
public:
A(int v) : obj(v) {}
};
int main() {
A a(3);
return 0;
}
Таким образом, экземпляр B
будет создан и уничтожен автоматически, без какого-либо вмешательства с вашей стороны.