如果一个类声明如下:
class MyClass
{
char * MyMember;
MyClass()
{
MyMember = new char[250];
}
~MyClass()
{
delete[] MyMember;
}
};
也可以这样做:
class MyClass
{
char MyMember[250];
};
一个类是如何在堆上分配的,就像我做 MyClass * Mine = new MyClass();
分配的内存是否也分配了第二个示例中的 250 个字节以及类实例化?该成员在 MyClass 对象的整个生命周期内是否有效?
至于第一个例子,在堆上分配类成员是否可行?
最佳答案
是的,是的,是的。
不过,您的第一个示例中有一些错误:因为它的一个数据成员是一个带有堆分配数据的指针,所以它还应该声明一个复制构造函数和赋值运算符,因为例如...
MyClass(const MyClass& rhs)
{
MyMember = new char[250];
memcpy(MyMember, rhs.MyMember, 250);
}
关于c++ - 堆/堆栈上的类成员分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2820477/