草庐IT

c++ - 使用结构标识符来表示 POD 类型和 C 结构

考虑以下代码:structFoo{};templatestructFoo*Bar(ForwardIteratorfirst,ForwardIteratorlast){(void)first;(void)last;Foo*foo(nullptr);returnfoo;}上面的代码在Clangv3.5中编译良好和GCCv4.9.但是,它在VC++2013中编译失败。从返回类型中删除struct标识符(见下文)解决了问题:structFoo{};templateFoo*Bar(ForwardIteratorfirst,ForwardIteratorlast){(void)first;(voi

C++ 虚拟构造函数,没有 clone()

我想对包含多态类指针的STL容器执行“深度复制”。我知道Prototype设计模式,通过VirtualCtorIdiom实现,如C++FAQLite,Item20.8中所述。.它简单明了:structABC//AbstractBaseClass{virtual~ABC(){}virtualABC*clone()=0;};structD1:publicABC{virtualD1*clone(){returnnewD1(*this);}//CovariantReturnType};那么深拷贝是:for(i=0;iclone());缺点作为AndreiAlexandrescustatesit

c++ - 编译器会优化返回具有固定大小数组的结构的函数吗?

假设我在C/C++中有一个具有固定大小数组成员的struct,例如:#defineSIZE10000structfoo{intvector_i[SIZE];floatvector_f[SIZE];};我想创建一个函数来返回foo的实例,例如:foofunc(intvalue_i,floatvalue_f){inti;foof;for(i=0;i如果我调用该函数使用:fooff=func(1,1.1);编译器会执行某种优化(即TCO)吗?可执行文件是直接填充ff变量,还是先填充func的f,然后复制f的所有值到ff?如何检查是否执行了优化? 最佳答案

c++ - 关于结构构造函数和析构函数行为 - C++

我不明白为什么这个程序的输出是这样的。为什么没有编译错误?我以为在尝试构造B时,编译器会找不到名为foo()的函数并报告错误。#includeusingnamespacestd;structA{inta;A(inti=0):a(i){cout输出:BA0ByeAByeB一般来说,我想知道当存在多重继承时,父结构体的构造和初始化顺序是怎样的?我也可以在类里面期待类似的行为吗?非常感谢任何关于构造函数和析构函数调用顺序的解释。注意:这不是家庭作业。而且,我研究过类似的主题,但没有找到关于这个问题的答案。 最佳答案 未定义的行为您通过调用

c++ - 为什么需要告诉结构它们有多大?

我注意到在c/c++中,需要告知许多Win32API结构它们有多大。即someStruct.pbFormat=sizeof(SomeStruct)为什么会这样?仅仅是出于遗留原因吗?也知道“pb”代表什么吗?编辑:哎呀,是的,我的意思是“cbFormat” 最佳答案 这是为了在扩展WindowsAPI时向后兼容。想象一下下面的声明structWinData{longflags;}BOOLGetWinData(WinData*wd);你这样调用它:WinDatawd;GetWinData(&wd);future的操作系统版本可能会将其

c++ - 声明如何与自身冲突?

这是我在尝试编译一些使用taucs的代码(不是我的代码)时遇到的错误:.../taucs/src/taucs.h:554:error:conflictingdeclaration‘typedefstructtaucs_ccs_matrixtaucs_ccs_matrix’.../taucs/src/taucs.h:554:error:‘taucs_ccs_matrix’hasapreviousdeclarationas‘typedefstructtaucs_ccs_matrixtaucs_ccs_matrix’什么?自相矛盾?在我捏了捏自己之后,我创建了一个测试header并放入了一个

c++ - C 和 C++ 中的 sizeof 结构或变量

我不明白为什么这段代码在C中打印1,而在C++中打印其他数字?#includestaticcharT='a';intmain(intargc,char**argv){structT{charX[2];};printf("sizeofTis%zu\n",sizeof(T));}为什么这段代码在C和C++中都打印1?#includeintmain(intargc,char**argv){staticcharT='a';structT{charX[2];};printf("sizeofTis%zu\n",sizeof(T));}有人可以稍微解释一下吗? 最佳答案

c++ - C 与 C++ 中的 struct 和 typedef

我目前正在使用C++IDE来处理需要在C上运行的内容,并希望确保以后不会遇到问题。制作以下结构后:typedefstructtest{inta;intb;};然后我使用创建它的一个实例testmy_test;然后像my_test.a=5等等...这在我的VStudioC++中运行良好。这以后会在gcc上工作吗?我阅读了弹出的相关问题(我发现我也不是第一个提出此类问题的人)但似乎没有人按照我的方式使用。其实typedefstruct{//stuff}test;和我的版本有什么区别? 最佳答案 typedefstructTHIS_IS_

c++ - 如何存储对象供以后使用并使它们可搜索

目前,每次创建一个对象时,我都使用一个vector来存储指向该对象的指针,但这感觉有点傻。可能有更好的方法,但我还没有找到。WhatI'mdoing:Exampleusage:Theproblem:IfIwanttoretrieveacertainDateIhavetogooverallitemsinthevectortoseeifRecPaymentsStack.stackDatematchesthedatetheuserrequested.TheRecPaymentStackisactuallycompletelyuselessatthemomentbecausewhatIshou

c++ - 如何在 C++ 中初始化静态结构?

我已经设法初始化正确的任何基本类型的变量(即int、char、float等),但是当声明一个小的复杂变量时,我只能看到错误。在头文件timer.h中声明classAndroidTimerConcept{...private://structthatholdsthenecessaryinfoforeveryeventstructResources{timer_delegate_tmembFunct;void*data;intsize;millis_ttime;};//declaringanarrayof10ResourcesstructsstaticstructResourcesResD