C ++类成员分配

时间:2011-10-22 13:31:02

标签: c++ class memory-management

假设我有这个:

class foo{
    Member member;
    foo();
    ~foo();
};

我应该如何分配会员?

编辑:我该如何告诉他使用哪个构造函数?(很抱歉不清楚)

现在我已经了解了member = Member(...);语法

这会导致内存泄漏吗?

{
    Memory *temp = new Member();
    member = *(temp);   //will it work at all??(is it copy constructor?)
    delete temp;
}

4 个答案:

答案 0 :(得分:6)

C ++不是Java。该成员已经分配。它是它所在实例的内存的一部分。它将由包含实例的构造函数构造(初始化)。关键词new与无指针的成员无关。

答案 1 :(得分:2)

假设Member不是指针类型的typedef,即它的不是定义为,例如,

typedef int* Member;

您无需执行任何操作来分配它,因为在分配foo的实例时会自动分配它。

答案 2 :(得分:0)

  编辑:我应该如何告诉他使用哪个构造函数?(很抱歉不清楚)

像这样:

foo::foo() : member(...) // member initializer list
{
}

答案 3 :(得分:0)

  

我应该如何告诉他使用哪个构造函数?

类声明中的

Member member不会调用任何构造函数,因为它只是声明。但是,当您稍后定义它时,应使用member()membermember(arg,..)来定义成员对象并调用某个构造函数。

代码很好而且有效。请注意,它将调用赋值运算符而不是复制构造函数。