使用 new [] 在 C++ 中创建自定义 a 类型的动态数组
Using new [] to create a dynamic array of custom a type in C++
自定义
类型的动态数组有什么特别需要注意的吗?
我正在尝试创建一个条件参数的动态数组(定义如下)
ConditionParameter* m_params;
...
m_params = new ConditionParameter[m_numParams];
但上面一行的结果只是一个 ConditionParameter 类型的新对象,其地址存储在 m_params 中。
struct ConditionParameter
{
ConditionParameter() :
type(OBJ_TYPE_OBJECT),
semantic(OP_SEMANTIC_TYPE_NONE),
instance(NULL),
attrib(ATTRIB_TYPE_NONE),
value(0)
{}
ConditionParameter(const ConditionParameter& other)
{
attrib = other.attrib;
instance = other.instance;
semantic = other.semantic;
type = other.type;
value = other.value;
}
ConditionParameter& operator = (ConditionParameter& other)
{
attrib = other.attrib;
instance = other.instance;
semantic = other.semantic;
type = other.type;
value = other.value;
return *this;
}
ObjectType type;
OperandSemanticType semantic;
Object* instance;
AttributeType attrib;
int value;
};
但是上面一行的结果只是一个类型的新对象 条件参数,其地址存储在m_params中。
不,结果是ConditionParameter
的实例化m_numParams
- 指向第一个实例的指针由 new
返回。
new[]
创建ConditionParameter
对象的连续数组。 第一个位于 m_params
. 您可以使用 []
运算符获取后续实例化,如下所示:
ConditionParameter* secondParam = &m_params[1];
你可以通过一点"sprintf debugging"来证明这一点:
ConditionParameter() :
type(OBJ_TYPE_OBJECT),
semantic(OP_SEMANTIC_TYPE_NONE),
instance(NULL),
attrib(ATTRIB_TYPE_NONE),
value(0)
{
cout << "Constructorn";
}
当然,
它new
返回指向已分配内存块的第一个元素的指针。 这就是为什么您将 new 的结果分配给 ConditionParameter*
类型的变量,该变量实际上是指向 ConditionParameter
的指针。但是,这并不意味着已分配单个对象。除非 new 返回 null,否则它将分配您告诉它的任意数量的对象。
相关文章:
- 使用QJsEngine在Qt中注册自定义类型
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 如何使自定义类型在unordered_map中用作键
- Qt5 远程对象 + 自定义类型,但不在 POD 中
- 标准::原子中的自定义类型
- 如何使用自定义类型声明Arduino数组?
- 使用自定义访问者时具有自定义类型的提升变体失败(源自 boost::static_visitor)
- 您可以将binary_search应用于具有自定义类型的矢量吗?
- 在自定义类型图中重用 SWIG 映射
- 扩展自定义类型的spdlog
- 重载自定义类型的 std::to_string 和 std::to_chars?
- 自定义类型转换运算符在转发引用上调用时不起作用(当对象按值传递时有效)
- 初始化自定义类型构造函数的数组
- 如何使用 QListIterator 的声明自定义类型定义
- 向前删除标题文件中其他名称空间的自定义类型
- 如何为提升日志和自定义类型定义输出流运算符
- typedef 中的自定义类型为 Qt MetaType
- 无法专门化 std::hash 以unordered_map存储自定义类型
- 运算符/ STD :: Chrono ::持续时间和自定义类型与Clang