小编Gue*_*sto的帖子

在堆栈上创建c ++对象,努力不要分配

假设我有一堂课

    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的析构函数之后或之前

c++ memory-management

2
推荐指数
1
解决办法
185
查看次数

标签 统计

c++ ×1

memory-management ×1