如何在c++中使用new为类动态分配内存
How to allocate memory dynamically for class using new in C++?
有以下类:
class mem
{
private:
int data;
public:
mem(){}
mem(int a)
{
data=a;
}
void dataDis()
{
cout <<"valu of i is "<< data << endl;
}
};
如何使用参数化构造函数和new操作符为该类的10个对象分配内存?
既然您说您需要直接使用new
,那么您可以轻松地为十个单独的对象做到这一点:
mem * mem1 = new mem(42);
// and so on
你不能指定初始化器当分配一个数组与new
;你必须让它们默认初始化,然后重新赋值:
mem * mems = new mem[10];
mems[0] = mem(42);
// and so on
不要忘记将它们分配给智能指针(或者在使用完它们后删除它们,如果使用new
的奇怪要求也禁止其他形式的明智内存管理)。
当你发现自己在不那么疯狂的限制下工作时,使用std::array
或std::vector
来代替原始内存分配:
std::vector<mem> mems = {42, 63, /* and so on */};
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 在c++中使用动态分配的问题
- 使用递归模板动态分配的多维数组
- 对具有动态分配的内存和析构函数的类对象的引用
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 访问动态分配列表中的元素
- 为什么 std::equal_to会导致动态分配?
- 调用析构函数以释放动态分配的内存
- 使用 new: "potentially uninitialized pointer"将对象数组动态分配给指针
- 在c++中,在new(动态分配)之前使用星号(*)
- 如何在C++中使用"new"动态分配向量数组?
- 在C++中使用带有二进制搜索的new动态内存分配
- 在动态分配中,在关键字new之前使用Why(unsigned char*)
- 在C++中,如何在没有动态分配(即NEW)的情况下将对象初始化为对象内部的指针
- 当我们可以使用=运算符为字符串赋值时,为什么要在赋值之前使用new运算符为字符串动态分配内存
- 如何在c++中使用new为类动态分配内存
- 内存管理:使用new操作符进行数组和动态分配
- 在c++中由new和delete动态分配
- 从指针向量中删除元素,并释放先前通过new操作符分配的动态内存