c++类成员分配

C++ class member allocation

本文关键字:分配 成员 c++      更新时间:2023-10-16

假设我有:

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;
}

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

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

typedef int* Member;

你不需要做任何事情来分配它,因为它是自动分配的,当你分配foo的实例

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

:

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

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

Member member在类声明中没有调用任何构造函数,因为它只是声明。但是,当您稍后定义它时,您应该使用member(), membermember(arg,..)来定义成员对象并调用特定的构造函数。

代码很好,它可以工作。只需注意,它将调用赋值操作符,而不是复制构造函数。