草庐IT

c++ - cv::imshow 有时很慢

cv::imshow有问题。对于我的图像大小,它通常会消耗大约1-2毫秒的处理时间,但在我的处理管道中的某个时刻,它会为相同类型的图像使用4-8毫秒。我有一个方法voidTool::displayImage(){startTimeMeasure();cv::imshow("output",image);evaluateTimeMeasure();}image是一个成员变量,highgui窗口是在别处创建的。时间测量适用于boost::posix_timeptime和time_duration。cvStartWindowThread();被调用了。重点是,如果在复杂的处理链(从视频文件加

c++ - 为什么复制构造函数有时要显式声明为非内联的?

我无法理解关于内联和客户二进制兼容性的句子。有人可以解释一下吗?C++常见问题Cline,Lomow:Whenthecompilersynthesizesthecopyconstructor,itmakestheminline.Ifyourclassesareexposedtoyourcustomers(forexample,ifyourcustomers#includeyourheaderfilesratherthanmerelyusinganexecutable,builtfromyourclasses),yourinlinecodeiscopiedintoyourcustomer

c++ - 为什么 swap() 有时会通过传递数组来实现?

在一些comp-sci论文和测试中,我看到swap()是这样实现的:voidswap(intx,inty,int*a){intt=a[x];a[x]=a[y];a[y]=t;}为什么不像这样简单地实现它:voidswap(int&x,int&y){intt=x;x=y;y=t;}前者的想法是通过不必为前两个参数索引数组来使调用代码更清晰吗?我意识到这不是一个非常重要的问题,因为我们应该使用std::swap(),但我仍然很好奇。 最佳答案 并非所有编程语言都支持通过引用调用。例如,后一种执行swap的方法不适用于Java。在包含伪代

C++ 不可复制,除了有时

我发现让一个类不可复制对我的代码质量有很大帮助。最初我使用boost::noncopyable执行此操作,但我发现VC++编译器错误不如私有(private)成员有用(双击导致代码中的错误位置)。T(Tconst&);T&operator=(Tconst&);确实,它提醒我很多案例是类没有作为引用传递到它们应该传递的地方。如此之多,以至于我非常希望即使在我只需要复制构造一次的类上也能收到警告。有什么好的方法吗?例如,我正在考虑将以上两个方法保留为私有(private)并添加一个公共(public)T(Tconst&,booldummy)构造函数以在我真的想复制构造时调用。或者也可以公开

c++ - 在 C++ 中是否有时不调用父类(super class)的构造函数?

这个问题让我参加了面试。如果B是A的子类。构造B时,有没有调用A的构造函数的时候?编辑:我告诉面试官我想不出这种情况,因为我认为只有在构造子类之前正确构造父类(superclass)才有意义。 最佳答案 一个可能的例子是同时A和B没有用户声明的构造函数和B的实例正在值初始化。A和B两者都有隐式声明的构造函数,不会在此初始化中使用。同样如果A没有用户声明的构造函数,但出现在B的构造函数的成员初始值设定项列表中但是用一个空的初始值设定项然后AB的构造函数将被值初始化用来。同样,因为A没有用户声明的构造函数值初始化不使用构造函数。

c++ - 我正在将 UDP 数据包从本地主机发送到本地主机,并在有时丢弃的数据包上运行。我该如何阻止这种情况以及为什么会发生这种情况?

这是我程序的输出sendingagentupdateCreatednewplayerIdentifiedsendingagentupdatePhysics:2ticksthisframetime=200time=300***PacketDropped:2:10******PacketDropped:2:11******PacketDropped:2:12******PacketDropped:2:13******PacketDropped:2:14******PacketDropped:2:15******PacketDropped:2:16******PacketDropped:2:

c++11 有时会包含 <cstdlib> 而 c++03 不会?

看看这个小程序。#includeintmain(){intvar=atoi("-99");//convertstringtointvar=abs(var);//takesabsolutevaluestd::cout编译产生以下错误信息:$g++-omainmain.cppmain.cpp:Infunction‘intmain()’:main.cpp:5:13:error:‘atoi’wasnotdeclaredinthisscopemain.cpp:6:16:error:‘abs’wasnotdeclaredinthisscopemain.cpp:9:10:error:‘EXIT_SU

c++ - 使用/RTC1 编译时有时会抑制警告 C4701

这段代码(注意注释行):#include#pragmawarning(error:4701)intmain(){charbuffer[1024];//buffer[0]=0;void*p;intsize=1;if(size给出以下警告(如预期的那样):f:\d\warning.cpp(13):errorC4701:potentiallyuninitializedlocalvariable'p'used但是,当我取消注释main()中的赋值时,不再给出警告。我正在使用/RTC1命令行选项进行编译以启用run-timeerrorchecks:cl.exe/RTC1warning.cpp我尝

c++ - 获取重载函数模板的地址是可能的,有时

在gcc4.9.0上:#include#includestructA{typedefinttype;};templatevoidfoo(T*){std::coutvoidfoo(typenameT::type*){std::coutstructidentity{typedefTtype;};templatevoidbar(T*){std::coutvoidbar(typenameidentity::type*){std::cout;//ambiguousfoo(0);//prints"b",asthesecondoverloadismorespecificautob=bar;//fin

c++ - 为什么将子指针向上转换为基类有时会更改指针值?

我发现了其他一些似乎与我的问题有关的问题,但没有一个直接回答它(即使是theone几乎同名)。我有一个从两个父类派生的C++子类。我创建了该类的一个对象,然后将其引用转换到它的两个父类中的每一个。强制转换值不相同,但其中一个仍然是子引用的值。这是代码:classMom{public:inta=1;};classDad{public:intb=2;};classChild:publicMom,publicDad{public:intc=3;};intmain(){Child*c=newChild;//0x00C5A618Mom*m=c;//0x00C5A618Dad*d=c;//0x00