pure-virtual相关内容

为什么纯虚函数初始化为0?

我们总是将纯虚函数声明为: virtual void fun()= 0; 即,始终将其分配为0。 我了解的是,这是将此函数的vtable条目初始化为NULL,此处的任何其他值都会导致编译时错误。 解决方案 原因 = 0 是使用的原因是Bjarne Stroustrup认为在实现该功能时,他不能在C ++社区之外获得另一个关键字,例如“ pure”。这在 ..
发布时间:2020-05-31 22:28:36 C/C++开发

从抽象类派生一个类(C ++)

我有一个带有纯虚函数f()的抽象类,我想创建一个从该类继承的类,并且还要重写函数f().我将头文件和cpp文件分开. 我在头文件中声明了函数f(int),定义在cpp文件中.但是,编译器说派生类仍然是抽象的. 我该如何解决? 解决方案 函数f()和f(int)没有相同的签名,因此第二个函数不会为第一个提供实现. PVF的签名和实现必须完全匹配. ..
发布时间:2020-05-23 18:41:44 C/C++开发

具有相同名称的抽象和已定义继承函数的多重继承

首先,我很抱歉是否还有其他帖子可以回答这个问题,我发现所有类似的帖子都涉及菱形继承方案或定义的函数,而事实并非如此. 简而言之,我想知道是否有可能让一个类从另外两个类继承而来,其中两个子类都具有一个具有相同名称和参数的函数,但它是在一个子类中定义的,并且在其他.此外,如果我能做到这一点,那么在对纯虚拟/抽象类进行调用的函数中,如果对派生类所做的更改很少,最终会在另一个子类上调用已定义的函数呢 ..

在Objective-C中实现纯虚拟方法

我想去那里.但是,认真地讲,如何以"Apple"方式实现纯虚拟方法?您是否将协议与基类一起使用,并在这些方法上引发异常? 解决方案 在Objective-C中进行编程时,您需要清除虚拟方法之类的知识.您不会在Objective-C对象上调用方法,而是向它们发送消息.对象要么响应消息,要么不响应,但是由于动态绑定,您只能在运行时才能知道. 因此,您可以在基础对象上声明一个方法,而不提供 ..
发布时间:2020-05-09 18:35:46 移动开发

C ++ 11接口纯虚拟析构函数

UPD .有一个标记,它是这个问题的重复.但是在那个问题中,OP要求HOW如何使用default定义纯虚拟析构函数.这个问题是关于有什么区别. 在C ++(可能的最新标准)中,使用空主体实现定义纯虚拟析构函数和仅空主体(或默认主体)之间的真正区别是什么? 变种1: class I1 { public: virtual ~I1() {} }; Variant 2.1: ..
发布时间:2020-04-27 04:44:27 C/C++开发

保持c ++头文件之外的私有部分:纯虚拟基类与pimpl

最近我从Java和Ruby切换回C ++,并且很奇怪,当我更改私有方法的方法签名时,我必须重新编译使用公共接口的文件,因为私有部分也在.h中文件。 我很快想出了一个解决方案,我猜想它对于Java程序员来说很典型:interfaces(=纯虚拟基本类)。例如: BananaTree.h: class Banana; class BananaTree { public ..
发布时间:2018-06-06 19:30:23 C/C++开发

模板,内部结构,本地类型和纯虚函数,哦

考虑一个例子,其中方法是纯虚拟的,接受模板类型的参数(从外部类型注入),并且模板类型是局部类型(在函数体中定义)。这种情况会导致g ++下的编译时错误。诚然,这是一个相当大的角落,但它确实源于真正的代码。这是一个可编译的,可重复的示例: #include struct Outer { struct InnerB ..
发布时间:2016-11-06 03:30:39 C/C++

C ++ - 从抽象基指针调用派生的函数

我一直在试图创建一个基于继承的TCP服务器模型,并取得了不同的成功。这些服务器由单独管理,它的任务是关闭这些服务器和其他简单的维护功能: class TCPServer { public: TCPServer(); 〜TCPServer(); void Bind(TCPDaemon * daemon){ if(!daemon-> IsRunning()){ throw T ..
发布时间:2016-10-27 05:28:05 C/C++开发

什么时候虚拟方法应该是纯粹的?

如果一个基类将一个方法定义为虚拟的,但是我已经找到了一些我正在努力工作的代码, 实现一个空体,因此不需要派生类来实现一个体。 virtual void AMethod1(){} // 1 virtual void AMethod2(){assert(false);} // 2 virtual void AMethod3()= 0; // 3 目前的代码。 ..
发布时间:2016-10-26 22:15:41 C/C++开发

R6025纯虚函数调用:什么是如何解决

回答可以在这里找到: 有效C ++的摘录,第三版,Scott Meyers 发布的网址: hmjd 请阅读该页面,以便了解为什么会发生。你也知道为什么要替换 virtual void OnRelease()= 0; 由: code> virtual void OnRelease(){}; 会工作,但不是正确的解决方法。 ..
发布时间:2016-10-25 15:11:23 C/C++开发