草庐IT

new-style-class

全部标签

c++ - 为什么不在 placement new 中隐式调用析构函数”?

如本网站所引用...http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10但是我没有找到原因,为什么我们要显式调用析构函数? 最佳答案 您可以将其视为对delete的调用,但由于您使用了placementnew,因此您不想使用delete,因为那样会尝试释放内存。如果你想让它自动调用,你可以使用RAII://Coulduseatemplatedversion,orfindanexistingimplsomewhere:voiddestroy_fred(Fred*f){f-

c++ - 同一个类(class),不同的尺寸......?

看代码,你就明白我的困惑了。测试.hclassTest{public:#ifndefHIDE_VARIABLEintm_Test[10];#endif};啊啊啊classTest;intGetSizeA();Test*GetNewTestA();Aho.cpp//#defineHIDE_VARIABLE#include"Test.h"#include"Aho.h"intGetSizeA(){returnsizeof(Test);}Test*GetNewTestA(){returnnewTest();}Bho.hclassTest;intGetSizeB();Test*GetNewTes

c++ - new操作分配的内存是连续的吗?

如题所示,我想知道在c++中,一个new操作分配的内存是否连续... 最佳答案 BYTE*data=newBYTE[size];在此代码中,无论给定大小,返回的内存区域都是连续。如果堆管理器不能分配size的连续内存,则失败。将返回异常(或malloc中的NULL)。程序员总是会在进程的地址空间中看到连续(是的,无限:-)内存的错觉。这就是虚拟内存为程序员提供的。请注意,程序员(少数嵌入式系统除外)总是看到虚拟内存。然而,几乎连续的内存可以以任意方式映射到物理内存中(以“页面”大小为粒度,通常为4KB)。该映射您看不到,而且大多数情

c++ - 在 C++ 代码生成器中模仿 C# 'new'(隐藏虚方法)

我正在开发一个系统,它采用一组已编译的.NET程序集并发出C++代码,然后可以将这些代码编译到任何具有C++编译器的平台。当然,由于.NET可以做C++做不到的各种事情,这涉及到一些广泛的技巧。其中一种情况是能够隐藏虚拟方法,例如C#中的以下内容:classA{virtualvoidMyMethod(){...}}classB:A{overridevoidMyMethod(){...}}classC:B{newvirtualvoidMyMethod(){...}}classD:C{overridevoidMyMethod(){...}}我想出了一个看起来很聪明并且确实有效的解决方案,如

c++ - <function> 不是 <class> 的成员

我已将我的函数“Credit”声明为带有一些参数的私有(private)成员。我的观察是,每当我尝试不带任何参数进行编译时,编译器都会成功编译。但是一旦我用函数中的参数进行编译,编译器就会报错'Transaction::Credit'isnotamemberof'Transaction'这是我的代码classTransaction:publicMenu{private:voidCredit(intdepost);//{return0;}public:voidDeposit();voidWithdraw(){}voidTransfer(){}};voidTransaction::Depo

C++ 强制 new[] 不分配 4 个额外的字节

我正在用C++编写自己的内存系统(出于性能原因、额外的调试信息,以便我可以分配16字节对齐的内存),并且我遇到了new[]问题。似乎调用new[]会导致额外分配4个字节,指示数组中的元素数量,这会导致所有后续对象的对齐失败。所以我的问题是:有什么方法可以通过编译器标志、pragma声明等来关闭这4个额外字节的使用吗?这是一个例子://Matrixclasshastobe16-bytealignedMatrix*transforms=new(matrixHeap,ALIGN_16,__FILE__,__LINE__)Matrix[31];transforms[0]=Matrix::Ide

c++ - 全局重载运算符 new/new[] delete/delete[] C++

我有这个重载operatornew和delete的示例代码#include#include#include#ifdefUSE_ZMALLOCextern"C"{#include"zmalloc.h"}#definem_malloczmalloc#definem_freezfree#else#ifdefUSE_JEMALLOC#include#definem_mallocje_malloc#definem_freeje_free#else#include"malloc.h"#definem_mallocstd::malloc#definem_freestd::free#endif#end

c++ - 用户调用 operator new 时的分配/对象详细信息拦截和收集问题

我正在开发一个小型内存工具,它可以跟踪分配和释放、对象大小、对象类型等。我用来跟踪源文件、行号和对象类型的方法是这样工作的:#defineDEBUG_NEWSourcePacket(__FILE__,__LINE__)*new#definenewDEBUG_NEWSourcePacket只是一个小类,它在构造期间接受一个constchar*和一个int。这些值通过__FILE__和__LINE__宏填充。对象类型是这样获取的:templateT*operator*(constSourcePacket&packet,T*p);p是指向新分配对象的指针,其类型使用RTTI发现。在运算符重载

c++ - bad_alloc 在类 Texture 上调用 new 时

这是有问题的行:Texture*texture=newTexture(...);我在这里收到来自bad_alloc的信息:void*__CRTDECLoperatornew(size_tsize)_THROW1(_STDbad_alloc){//trytoallocatesizebytesvoid*p;while((p=malloc(size))==0)if(_callnewh(size)==0){//reportnomemorystaticconststd::bad_allocnomem;_RAISE(nomem);}return(p);}大小是~28字节大到目前为止,该程序已在32

添加ng class的课程单击孩子的父母

我有以下问题。我需要设置active与父母的课div从ChildDiv点击,该父母内部。为了说明我将提供一个代码。并省略它的一部分以确保可读性。html...SelectCSS.selected{border:2pxsolid#ffbe10;}.selected-cta{background-color:#ffbe10;}如你所见,我有offer__container获取一些数据并进行NG重复,我需要能够点击offer__container__cta添加active样式对父容器的样式,并跟踪,就像我单击另一个div通过NG重复渲染,应采用主动样式并将其转移到该div。最好还是想设置某些样式of