假设我有一堂课
class A {
public:
A(int i);
~A();
private:
B b; // Want <- this guy to be constructed with i in A's constructor!
};
我希望b在构造函数中构造,具有在构造A之前不知道的特定参数.如果我要在A的构造函数中执行以下操作:
A::A(int i) {
B b(i);
// Or even if I try to do b = B::B(i);
}
我注意到b在堆栈上被分配了两次!aghghg.
然后我发现我在A的构造函数中可以做的是:
A::A() : b(B::B(7)) {
}
并且b只在堆栈上分配一次!
但这非常笨重.谁有更好的主意?请记住,构造函数应该只调用一次!
这是使用重要参数非动态分配对象的标准方法吗?如果我们能把b的结构推到那个花哨的参数列表中,那该怎么办?你被迫在堆栈上动态分配或构建TWICE!
奖金问题:什么时候被解除分配?是在A的析构函数之后或之前