假设我有这个:
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;
}
答案 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()
,member
或member(arg,..)
来定义成员对象并调用某个构造函数。
代码很好而且有效。请注意,它将调用赋值运算符而不是复制构造函数。