使用默认构造函数将指针的数组指向对象
Array of pointers to objects using the default constructor
我今天在阅读C 类的默认构造函数时正在思考,假设我们有类SortedArray的此代码:
class SortedArray
{
private:
struct arrayCell
{
int pageID;
int totalNeighbors;
};
};
我们分配了指向此类对象的一系列指针,然后使用默认构造函数初始化指针。会发生什么?会为结构存储吗?如果这是INT的初始化?谢谢。
旧答案:我很确定为该元素创建内存,如果您编译并运行它,则在访问该内存时没有分段故障。INT将设置为默认值0。
可以在此处找到默认的构造函数信息。
编辑: 上面的答案是不正确的。该代码将无法为整数元素提供内存,因为构造是定义的,但是除非您手动创建一个,在这种情况下将创建这些整数的内存,否则不会创建构造的对象。
至于创建整数的值:
他们将不会将其初始化为有意义的任何事物,它们只会在创建之前包含内存中的内容。
如果您在谈论SortedArray*
类型的指针,则否。
SortedArray
是一个空的类,带有私人嵌套类型。
如果您分配嵌套类型SortedArray::arrayCell
的实例,则整数将被默认为initialized(值未指定)。
我很确定它将为您在数组中初始化的每个对象分配内存,并将INT设置为默认值(0)。
相关文章:
- 销毁C++中动态分配的内存(数组对象)
- 数组对象的生存期是否在重用其元素存储时结束?
- 为什么顶点数组对象会导致错误?
- 具有纯虚函数和指针数组对象类型的父类的指针数组
- 这是使用构造函数初始化数组对象的最佳方法吗?
- OpenGL 顶点数组对象与 tinyobjloader
- 将数组/对象/结构列表从C#库中传递给C MFC应用程序
- C++ RapidJson 帮助反序列化数组对象
- ptrdiff_t可以表示指向同一数组对象元素的指针的所有减法吗?
- 检查成员函数是否返回临时对象或数组对象
- 为什么 std::variant 不能容纳数组对象类型,而联合可以?
- 当数组对象以函数参数传递时,为什么复制构造函数会自称
- 如何使用箭头指针打印出一类数组对象,这些对象中有多个分数
- C++17 std::shared_ptr<> 类数组对象的重载运算符 []
- 添加两个具有运算符重载的数组对象,从而导致分段错误
- opengl:两个不同的矢量可以绑定到同一个顶点数组对象吗
- 使用相同的数据填充数组对象或使用指针
- 方法用于最快的分配,并且不需要将动态大小的数组对象作为局部变量
- 如何将2d数组对象传递给c++中的函数
- ReferenceTable溢出(jni-android),数组对象释放