草庐IT

NEW_TABLE

全部标签

c# - C++ 相当于 C# 中的 new Random(seed)

当我们在C#中使用随机数生成器时,我们可以像这样定义一个变量privateRandom_rndGenerator;在一个类中然后调用_rndGenerator=newRandom(seed);在类的构造函数中正确。我的问题是:这种定义的C++等价物是什么(即类中的RNG)。我认为这不是正确的使用方法srand((unsignedint)seed);对吗? 最佳答案 C++11具有更强大的随机数生成工具。这是一个例子:#include#includestd::size_tget_seed();//whateveristheprefer

c++ - boost::make_shared 不是在调用(放置)运算符 new 吗?

我第一次使用boost::make_shared来创建共享指针指向的对象。主要是因为我们的代码太慢了,单次分配确实有助于boost性能。在以“硬手动方式”修复了一些内存泄漏之后,我决定通过覆盖所有相关类的新运算符来实现一个简单的内存泄漏检测器,仅用于计算在我们的应用程序的特定点哪些对象仍然存在。我之前已经实现过几次,惊讶地发现我的代码不再检测到任何对象。我认为我所要做的就是覆盖“placementnew”而不是“normal”operatornew,因为make_shared的boost网站文档中有以下内容:"Effects:Allocatesmemorysuitableforanob

c++ - C++ 中的 new 返回 (void *) 吗?

这是一个简单的问题:使用new运算符是否返回类型为(void*)的指针?引用Whatisthedifferencebetweennew/deleteandmalloc/free?答案-它说newreturnsafullytypedpointerwhilemallocvoid*但根据http://www.cplusplus.com/reference/new/operator%20new/throwing(1)void*operatornew(std::size_tsize)throw(std::bad_alloc);nothrow(2)void*operatornew(std::siz

c++ - 避免 std::bad_alloc。 new 应该返回一个 NULL 指针

我将一个中型应用程序从C移植到C++。它不会在任何地方处理异常,这一点不应该改变。我(错误!)对C++的理解是(直到我昨天艰难地学习它)(默认)new运算符在出现分配问题时返回NULL指针。然而,直到1993年(左右)才出现这种情况。现在,它抛出一个std::bad_alloc异常。是否可以在不重写所有内容以在每次调用时使用std::nothrow的情况下返回到旧行为? 最佳答案 你可以重载operatornew:#includevoid*operatornew(size_tpAmount)//throw(std::bad_allo

c++ - 在运行时访问 v-table

是否可以在运行时访问函数的v表?是否可以确定不同功能版本的数量等元信息?这可能更像是一个理论问题,但是开发人员是否可以通过确保v表永远不会超过特定行数来限制可以扩展给定基类的类的数量? 最佳答案 Isitpossibletoaccessafunction'sv-tableatruntime?Canmeta-informationsuchasthenumberofdifferentfunctionversionsbedetermined?不是以便携的方式。该标准甚至没有虚拟表的概念,它更多的是一个实现细节而不是一个要求,即使我知道的所

c++ - 初始化 shared_ptr 成员变量,new vs make_shared?

当初始化一个shared_ptr成员变量时://.hclassCustomer{public:Customer();private:std::shared_ptrsomething_;}//.cppCustomer():something_(newOtherClass()){}对比Customer():something_(std::make_shared()){}是否允许使用make_shared版本?我似乎总是看到第一个版本,哪个是首选? 最佳答案 不允许make_shared的唯一时间是:如果您得到一个由其他人分配的裸指针并将

c++ - 我如何在共享内存中使用运算符 `new` 和 `delete`?

我想使用共享内存在多​​个程序之间共享一些对象。我在thissite找到了示例.它没有任何对象分配,只是直接寻址,但我想在共享内存中创建结构或类。 最佳答案 因为内存已经分配好,你想使用placementnew:void*ptr=shmat(shmid,0,0);//HandleerrorsMyClass*x=new(ptr)MyClass;然后,MyClass的新实例将在ptr指向的内存中构造。当不需要该对象时,您必须手动调用析构函数(不释放内存)。ptr->MyClass::~MyClass();

c++ - C++ placement new 如何工作?

这个问题是为了确认我对概念的理解是否正确,并就使用方式和可能的优化征求专家意见。我试图理解“placementnew”,下面是我想出的程序...#include#includeclassA{int*_a;public:A(intv){std::cout~A();std::couttestFunction();A*obj2=new(obj1)A(22);obj1->testFunction();obj2->testFunction();delete(obj1);//Isitreallyneedednow?Hereitwilldeletebothobjects..sothisisnotth

c++ - 是否可以创建一个通用方法或类来创建任何类的 "new"实例?

通常,如果我有一个Foo或一个Bar,我会做类似的事情:Foo*foo=newFoo();Bar*bar=newBar(2,3,5);有没有一种方法可以使用模板或宏来构造一个函数,这样我就可以做类似的事情:Foo*foo=MyAwesomeFunc(Foo);Bar*bar=MyAwesomeFunc(Bar,2,3,5);TheactualmethodsignatureofMyAwesomeFuncisnotimportanttome.Foo和Bar不需要以任何可能的方式关联,并且可以具有完全不同的构造函数。此外,我可能希望在未来支持任意数量的类,而不必实际修改MyAwesomeFu

Element ui 修改table表格行高

关键代码:  :row-style="iRowStyle"    :cell-style="iCellStyle"    :header-row-style="iHeaderRowStyle"computed:{iRowStyle:function({row,rowIndex}){return'height:30px';},iHeaderRowStyle:function({row,rowIndex}){return'height:30px';},iCellStyle:function({row,column,rowIndex,columnIndex}){return'padding:0px'