草庐IT

new_model

全部标签

c++ - 如何在可能使用 placement new 的同时创建数组

我一直致力于创建一个自定义分配器作为一项有趣的练习/实践,我在创建数组时遇到了两个潜在的问题。对于典型的分配调用,我将使用malloc和placementnew。但是,当我去创建一个数组时,我对应该如何完成感到困惑。有一次,我注意到在某些地方似乎placementnew对于数组(例如here)可能不安全.在尝试对数组使用placementnew时,我也遇到了自己的错误。我会得到错误`errorC2679:binary'=':nooperatorfoundwhichtakesaright-handoperandoftype'SomeClass*'(orthereisnoacceptabl

hibernate - "migrate business logic code into our domain model"是个好主意吗?

我正在阅读HibernateinAction,作者建议将业务逻辑移动到我们的域模型中(第306页)。例如,在本书提供的示例中,我们有三个实体,分别名为Item、Bid和User,作者建议添加一个placeBid(Userbidder,BigDecimalamount)方法到Item类。考虑到通常我们有一个独特的业务逻辑层(例如Spring中的Manager或Service类),其中包括控制事务等,这真的是一个好建议?不给我们的实体添加业务逻辑方法不是更好吗?提前致谢。 最佳答案 如前所述Wehaveadistinctlayerfor

hibernate - "migrate business logic code into our domain model"是个好主意吗?

我正在阅读HibernateinAction,作者建议将业务逻辑移动到我们的域模型中(第306页)。例如,在本书提供的示例中,我们有三个实体,分别名为Item、Bid和User,作者建议添加一个placeBid(Userbidder,BigDecimalamount)方法到Item类。考虑到通常我们有一个独特的业务逻辑层(例如Spring中的Manager或Service类),其中包括控制事务等,这真的是一个好建议?不给我们的实体添加业务逻辑方法不是更好吗?提前致谢。 最佳答案 如前所述Wehaveadistinctlayerfor

c++ - 是否可以使用 placement-new 来改变多态对象的类型?

是否可以使用placement-new来改变多态对象的类型?如果不是,标准中究竟禁止了什么?考虑这段代码:#includestructAnimal{Animal();virtual~Animal();virtualvoidbreathe();voidkill();void*data;};structDead:Animal{voidbreathe()override;};voidAnimal::kill(){this->~Animal();new(this)Dead;}调用“kill”合法吗?更新:根据此处显示的通过显式调用析构函数更改对象类型并为兼容的新对象应用placement-ne

c++ - c++ operator new[]/delete[] 是否调用 operator new/delete?

C++operatornew[]/delete[](不是我的)是否调用operatornew/delete?在我用自己的实现替换operatornew和operatordelete之后,下面的代码将调用它们:int*array=newint[3];delete[]array;并且当我也替换了operatornew[]和operatordelete[]时,上面的代码将只调用他们。我的运营商实现:void*operatornew(std::size_tblockSize){std::cout(block);blockSize=blockSize-sizeof(int);std::cout(

c++ - 通过new和allocator分配内存有什么区别

通过new/malloc和allocator分配内存有什么区别?如果我们有new和malloc选项,为什么我们还需要一个单独的vector内存分配器? 最佳答案 嗯,我觉得new和malloc是不一样的,allocator提供的功能不一样。malloc返回未初始化的数据,calloc返回零数据。但是如果你正在创建某个类的实例,new将调用构造函数(不是int、bool这些primitive类型,顺便说一句,也可以初始化)。delete会调用析构函数,而free不会。至于allocator,它为用户提供了一个抽象层。allocator

c++ - C++ 标准要求 new char[] 产生对齐内存的意图是什么?

根据C++03标准,5.3.4/10Forarraysofcharandunsignedchar,thedifferencebetweentheresultofthenew-expressionandtheaddressreturnedbytheallocationfunctionshallbeanintegralmultipleofthemoststringentalignmentrequirement(3.9)ofanyobjecttypewhosesizeisnogreaterthanthesizeofthearraybeingcreated.分配函数(operatornew[]

c++ - qml : data models in models 中的嵌套列表

我正在尝试在QML界面中实现嵌套评论系统。我有一个C++模型(从QAbstractListModel继承),其中模型中的每个项目返回两个值:一个是QString,另一个是角色名称为“dataMap”的QVariantMap。这适用于QMLListView。现在每个QVariantMap包含一个项目“data”,它进一步包含一个QVariantList“children”。现在这基本上列出了具有相同结构的其他QVariantMap。我实现这个的想法是在QMLListView中使用递归委托(delegate)。下面是我的代码的最简单版本。ListView{id:commentsListan

c++ - 覆盖 "new"并记录有关调用者的数据

我正在尝试编写一个内存分析器,到目前为止已经能够让我的自定义函数为malloc、free、new和delete工作。我尝试使用__FILE__和__LINE__将发起者记录在重载的新方法中,但(正如预期的那样)它只给出了重载函数所在位置的详细信息。有没有一种方法可以在不对被测试组件的现有代码进行任何更改的情况下获取有关重载函数的发起者的详细信息(例如#defineformalloc)?我使用的函数是:void*operatornew(size_tsize){if(b_MemProfStarted){b_MemProfStarted=false;o_MemLogFileboolb_Mem

c++ - `django model` 类型抽象是否可用于 C++?

在Django(使用Python)中,您可以非常轻松地创建“模型”,允许您抽象出所有SQL,并简单地使用对象从数据库中检索/存储信息。任何人都可以指出允许我做同样事情的c++库吗?目前我们正在使用postgres后端并通过libpqxx连接到它。我们正在创建自己的面向对象的数据模型,但实际上必须一遍又一遍地复制/粘贴sql代码,然后为每个“模型”对其进行修改。如果我们必须移动到不同的后端,上帝会帮助我们,因为大部分代码都需要调整(目前它并没有以仅创建不同后端部分的方式抽象)。是否存在允许我连接到不同类型的后端数据库并抽象出编写任何SQL来定义和使用我们的数据库模型的需要的库?