草庐IT

pure-virtual

全部标签

c++ - 我可以用纯虚拟函数覆盖虚拟函数吗?

我有三个类:B、D和G。D是B而G是D。B和D都是抽象的。B来自第三方。B有一个非纯虚方法,G需要实现(成为D)。我可以将虚函数重新定义/覆盖为纯虚函数吗?例子:classB//fromathirdparty{public:virtualvoidfoo();};classD:publicB{public:voidfoo()override=0;//allowedbygcc4.8.2virtualvoidbar()=0;};classG:publicD{public://forgottoreimplementfoovoidbar()override;};intmain(){Gtest;/

C++ 风格 : Prefixing virtual keyword to overridden methods

我一直在与我的同事讨论是否在被覆盖的方法前加上virtual关键字,或者只在原始基类中添加前缀。我倾向于在所有虚拟方法(即涉及vtable查找的方法)前面加上virtual关键字。我的理由有三个:鉴于C++缺少覆盖关键字,虚拟的存在关键字至少会通知您该方法涉及查找和理论上可以被覆盖进一步的特化,或可能是通过指向更高级别的指针调用基类。一直使用这种风格意味着,当你看到一个方法时(至少在我们的代码中)没有virtual关键字,你可以最初假设它既不是源自基础或专业在子类中。如果由于某些错误,virtual已从IFoo中删除,所有children仍然可以正常工作(CFooSpecializat

C++ 风格 : Prefixing virtual keyword to overridden methods

我一直在与我的同事讨论是否在被覆盖的方法前加上virtual关键字,或者只在原始基类中添加前缀。我倾向于在所有虚拟方法(即涉及vtable查找的方法)前面加上virtual关键字。我的理由有三个:鉴于C++缺少覆盖关键字,虚拟的存在关键字至少会通知您该方法涉及查找和理论上可以被覆盖进一步的特化,或可能是通过指向更高级别的指针调用基类。一直使用这种风格意味着,当你看到一个方法时(至少在我们的代码中)没有virtual关键字,你可以最初假设它既不是源自基础或专业在子类中。如果由于某些错误,virtual已从IFoo中删除,所有children仍然可以正常工作(CFooSpecializat

ruby - 'json"gem 和 'json_pure' gem 有什么区别?

我需要一个库来处理Ruby中的JSON对象。http://rubygems.org/search?query=json上有两个可用的gemjson和json_purejson_pure仅用Ruby编写,而json使用C。我所理解的是json更快,因为使用了C.那么json是否更适合生产?两者似乎都可以通过运行geminstall命令轻松安装。当我安装Nokogiri时,我需要做一些额外的事情。我认为需要额外的工作,因为Nokogiri使用的是C扩展,但我不需要为jsongem做任何额外的事情。json和json_pure的优缺点是什么?假设安装json很容易,那么json_pure有什

c++ - 在什么情况下给出一个纯虚函数的实现是有利的?

在C++中,给出纯虚函数的实现是合法的:classC{public:virtualintf()=0;};intC::f(){return0;}你为什么要这样做?相关问题:C++faqlite包含一个例子:classFunct{public:virtualintdoit(intx)=0;virtual~Funct()=0;};inlineFunct::~Funct(){}//definedeventhoughit'spurevirtual;it'sfasterthisway;trustme我不明白为什么析构函数被声明为纯虚拟然后实现;我不明白为什么这应该更快的评论。

c++ - 在什么情况下给出一个纯虚函数的实现是有利的?

在C++中,给出纯虚函数的实现是合法的:classC{public:virtualintf()=0;};intC::f(){return0;}你为什么要这样做?相关问题:C++faqlite包含一个例子:classFunct{public:virtualintdoit(intx)=0;virtual~Funct()=0;};inlineFunct::~Funct(){}//definedeventhoughit'spurevirtual;it'sfasterthisway;trustme我不明白为什么析构函数被声明为纯虚拟然后实现;我不明白为什么这应该更快的评论。

c++ - 函数定义上的纯说明符

在GCC上编译时,我得到error:pure-specifieronfunction-definition,但当我使用VS2005编译相同的代码时却没有。classDummy{//error:pure-specifieronfunction-definition,VS2005compilesvirtualvoidProcess()=0{};};但是当这个纯虚函数的定义不是内联的时候,它就起作用了:classDummy{virtualvoidProcess()=0;};voidDummy::Process(){}//compilesonbothGCCandVS2005错误是什么意思?为什

c++ - 函数定义上的纯说明符

在GCC上编译时,我得到error:pure-specifieronfunction-definition,但当我使用VS2005编译相同的代码时却没有。classDummy{//error:pure-specifieronfunction-definition,VS2005compilesvirtualvoidProcess()=0{};};但是当这个纯虚函数的定义不是内联的时候,它就起作用了:classDummy{virtualvoidProcess()=0;};voidDummy::Process(){}//compilesonbothGCCandVS2005错误是什么意思?为什

c++ - 从基类构造函数调用纯虚函数

我有一个包含纯虚函数的基类MyBase:voidPrintStartMessage()=0我希望每个派生类在它们的构造函数中调用它然后我把它放在基类(MyBase)构造函数中classMyBase{public:virtualvoidPrintStartMessage()=0;MyBase(){PrintStartMessage();}};classDerived:publicMyBase{public:voidPrintStartMessage(){}};voidmain(){Derivedderived;}但我收到链接器错误。thisiserrormessage:1>------B

c++ - 从基类构造函数调用纯虚函数

我有一个包含纯虚函数的基类MyBase:voidPrintStartMessage()=0我希望每个派生类在它们的构造函数中调用它然后我把它放在基类(MyBase)构造函数中classMyBase{public:virtualvoidPrintStartMessage()=0;MyBase(){PrintStartMessage();}};classDerived:publicMyBase{public:voidPrintStartMessage(){}};voidmain(){Derivedderived;}但我收到链接器错误。thisiserrormessage:1>------B