草庐IT

应不应该

全部标签

c++ - 我应该如何正确地将 cout 分配给静态 ostream 引用变量?

我正在定义这样一个类:classStaticRuntimeContext{public:enumVerbosity{kHIGH,kMEDIUM,kLOW,kSILENT};staticvoidConstruct();staticstd::ostream&stdout1(){returnstdout1_;}staticstd::ostream&stdout2(){returnstdout2_;}staticstd::ostream&stdout3(){returnstdout3_;}staticstd::ostream&stderr(){returnstderr_;}protected:

c++ - 应该在无指针类中声明/实现析构函数吗?

应该在无指针类中声明/实现析构函数吗?有/没有它有什么好处吗?我的男人是:classPoint{public:intX,Y;Point(intx,inty);//~Point(void);//shouldIuncomentitandimplementemptydestructor?} 最佳答案 Shoulddestructiorbedeclared/implementedinpointerlessclass?不需要[条件适用]。编译器会为你生成一个。只有当你想执行一些特定的事情时,你才应该提供一个,而编译器不会。例如:资源管理(内存

“无法加载文件或汇编” NetStandard,版本= 2.0.0.0,...'。参考组件不应加载以执行

目标:从.NET4.7控制台应用程序,使用assembly.getType()的反射,我尝试从assemblyX提取NetStandard2.0类的类型。我要做的事情:但是,该组件X具有NetStandard2.0的依赖性。为了获得类型,必须将NetStandard依赖性加载到AppDomain中。这就是为什么当AppDomain通过汇编储存事件请求NetStandardAssembly时,我只需加载DLL:varnetStandardDllPath=@"C:\Users\xxx\.nuget\packages\NETStandard.Library.2.0.0-preview1-25301-

c++ - 应该在策略模式中使用安全指针吗?

给定一个典型的策略模式classStrategy{public:virtualintexecute()const=0;}classStrategyA:publicStrategy{public:intexecute()constoverride;}classStrategyB:publicStrategy{public:intexecute()constoverride;}我相信实现上下文类的“pre-C++11”方式类似于classContextRaw{public:ContextRaw(Strategy*the_strategy);~ContextRaw();//Shouldthi

c++ - std::current_exception 是否应该从类的析构函数中的 catch block 返回非空

我和我的同事认为我们在VisualC++2012和2013中发现了一个错误,但我们不确定。以下代码中对std::current_exception的调用是否应该返回一个非空的exception_ptr?似乎在我们尝试过的大多数其他编译器上:#include#include#includeclassA{public:~A(){try{throwstd::runtime_error("ohno");}catch(std::exception&){std::clog在VisualC++下运行时,我们得到“0”(假,这意味着返回的exception_ptr为空)。其他编译器,例如g++,打印“

c++ - 为什么 bind() 应该被弃用?

阅读C++17关于删除标准中一些已弃用的、旧的和未使用的部分的提案(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm),我发现D.9部分有点奇怪:D.9"Binders"[depr.lib.binders]Thisdefinesbind1st()/bind2nd(),whichwerestrictlysupersededbybind().(Inthefuture,I'llarguethatbind()itselfhasbeensupersededbylambdasandespeciallygenericl

c++ - 为什么参数在用于初始化另一个对象时应该按值传递?

将对象传递给函数时,可以选择按值或const&传递参数.特别是当对象的创建成本可能很高并且它在内部发生变化或用于初始化另一个对象时,建议按值传递对象。例如:classFoo{std::vectord_strings;public:Foo(std::vectorstrings):d_strings(std::move(strings)){}//...};常规方法是声明strings参数为std::vectorconst&并复制参数。上面构造函数的值参数也需要复制!为什么按值传递比按const&传递更可取?? 最佳答案 通过string

c++ - C++ 抽象工厂是否应该为构造的对象提供 destroy 方法?

考虑下面的接口(interface)(使用哑指针是因为我们还在C++98)classWidgetMaker{virtualWidget*makeWidget()=0;};具有以下可能的实现classSpecificWidgetMaker:publicWidgetMaker{Widget*makeWidget(){returnnewSpecificWidget();}};Widget是一些具有虚析构函数的基类,SpecificWidget扩展了它。我的同事声称WidgetMaker接口(interface)应该包含以下方法virtualvoidfreeWidget(Widget*widg

C++/STL 我应该使用哪种算法来检查容器是否有重复项?

是否有任何STL算法可以判断容器是否具有重复元素(使用operator==或给定谓词)?让我们考虑这两个vector:std::vectorv1{1,2,3};std::vectorv2{1,2,1};我希望有这样的功能:std::is_exclusive(v1.begin(),v1.end());//returningtruestd::is_exclusive(v2.begin(),v2.end());//returningfalse有这么简单的功能吗?我找不到任何(找到std::unique,但这会修改​​vector...)注意:我不是在问如何“检查容器是否有重复项”,我知道我该

c++ - 调用基本构造函数时是否应该复制继承构造函数的参数?

对于以下程序:#includestructFoo{Foo(){std::cout海湾合作委员会提供:$g++-std=c++17-O2-Wall-pedantic-pthreadmain.cpp&&./a.outFoo()Foo(constFoo&)~Foo()~Foo()VS2017(也在C++17模式下)给出:Foo()Foo(constFoo&)Foo(constFoo&)~Foo()~Foo()~Foo()谁是对的,为什么?(我们也不要忘记VS2017没有正确执行强制复制省略。所以它可能只是拷贝是“真实的”,但GCC根据C++17规则省略了它,而VS没有...)