virtual-functions相关内容

为什么g ++在编译的二进制文件中存储类名?

我注意到如果我在我的程序中运行 strings ,它是由 g ++ 编译的,输出包含它使用的各种类。 该程序是用 -O3 编译的,没有 -g 或 -p ,并且当我去掉二进制文件时类名仍然存在。 我想知道为什么需要 g ++ 将这些信息存储在二进制文件中?目前所有的类名似乎都是使用虚拟函数的类,所以我怀疑这是与它有关的。 解决方案 这可能与 RTTI 有关,具体来说,RTTI允许您查询 ..
发布时间:2018-04-18 20:48:16 C/C++开发

纯虚方法称为错误

我有以下定义: class PartitioningMethod { public: virtual void addConstraints ConstraintManager& cm)= 0; virtual bool hasMoreConstraints()= 0; virtual void setQuery(const Query& q)= 0; virtual〜Pa ..
发布时间:2017-09-30 22:38:51 C/C++开发

虚拟构造器成语和工厂设计

在虚拟构造函数中,有虚函数使用虚函数返回对象的新对象或对象的副本。但是然后调用这些虚函数的多态方式,你必须使用实际构造函数创建该类的对象。 在设计模式上下文中,这意味着客户端知道该类型使用对象创建的多态方式之前的对象? 解决方案 客户端不一定必须了解具体的类型。例如,考虑这个层次结构: struct Base { virtual〜Base(); virtual Ba ..
发布时间:2017-05-16 18:26:26 C/C++开发

调试声明失败!表达式:_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)

我知道这个问题在这些论坛上被评估了很多次,但是它们对于大多数时候的具体案例来说都是独一无二的。 这是一个类的项目在C ++中不少),而且这个项目的重点是重写经典的棋盘游戏Reversi。 我已经通过代码修剪了几个小时,最后制作了一个程序,工作,所以我想! 我遇到的大问题似乎来自我的解构程序,因为它给我这个错误,我们很多人看到。我的代码发布在下面和我自己的调试代码(使用有用的cou ..

Cuda虚拟类

我想在cuda内核中执行一些虚拟方法,而不是在同一个内核中创建对象,我想在主机上创建它,并将其复制到gpu内存。 我在内核中成功创建对象并调用了一个虚方法。复制对象时出现问题。这是有道理的,因为显然虚函数指针是假的。 发生什么是简单的“Cuda网格启动失败”,至少这是Nsight说。 但是当看看SASS时,它会对虚函数指针的取消引用崩溃。这是有道理的。 我当然使用Cuda 4.2以 ..
发布时间:2017-03-04 13:23:37 C/C++开发

为什么我们在C ++中没有虚拟构造函数?

为什么C ++没有虚拟构造函数? 解决方案 来自Bjarne Stroustrup的C ++风格和技术常见问题 为什么我们没有虚拟构造函数? 虚拟调用是一种机制工作完成给部分 信息。特别是,“virtual”允许我们调用一个函数 ,只知道任何接口,而不是对象的确切类型。要 创建一个对象,你需要完整的信息。特别是,你 需要知道你想创建的确切类型。因此, a“对构造函数的 ..
发布时间:2016-12-29 15:56:44 C/C++开发

构造函数中的虚构成员调用

我从ReSharper得到一个警告,从我的对象构造函数调用虚拟成员。 解决方案 (假设你在C#中写这篇文章) 当用C#编写的对象被构​​造时,发生的情况是初始化器按照从最大派生类到基类的顺序运行,然后构造函数按照从基类到最大派生类()。 此外,在.NET对象中更改类型,但是最先导出的类型,方法表为最派生类型。这意味着虚方法调用总是在最派生的类型上运行。 当你合并这两个事实 ..
发布时间:2016-12-29 15:41:03 C#/.NET

如何覆盖好的风格的虚拟函数? [C ++]

我知道这个问题是非常基本的,但我已经在少数出版物(网站,书籍)遇到不同风格的覆盖虚拟功能。我的意思是:如果我有基类: class Base { public: virtual void f()= 0; }; 在某些出版物中,我看到要覆盖这些一些作者只会说: void f(); ,有些人仍然会在void之前重复virtual关键字。哪种形 ..
发布时间:2016-12-14 15:34:02 C/C++开发

投射到一个孩子

我实际想要做的是将 moneypunct 转换到中的 punct_facet “http://stackoverflow.com/q/31291004/2642059\">此问题,无需编写复制构造函数,如此回答。 但是,为了撰写最小,完整,可验证的示例假设我有这两个类: class Parent { public: Parent(Complex& args); 父运算符=(co ..
发布时间:2016-11-13 22:04:48 C/C++开发

我应该总是使用override contextual关键字吗?

我知道引入了 override contextual关键字来编写更安全的代码(通过检查 virtual 函数相同的签名),但我不觉得好,​​因为它似乎是多余的我写每覆盖每次我想覆盖 virtual 函数。 是不是不使用 override 为99%的病例?为什么/何时应该使用它(编译器警告是不够的,当我们错误地隐藏一个虚拟函数)? 换一种说法;在C ++ 11中使用 override c ..
发布时间:2016-11-06 02:32:22 C/C++

指向派生类对象的指针丢失vfptr

首先,我想写一个run-of-the-mill,简单的Ray Tracer。在我的Ray Tracer中,我有多种类型的几何在世界上,所有派生于一个基类,称为“SceneObject”。 / ** 所有将出现在场景 * / 类SceneObject { public: mat4 M,M_inv; 颜色c; SceneObject(); 〜SceneObject() ..
发布时间:2016-10-30 05:28:58 C/C++开发

纯虚方法称为错误

我有以下定义: class PartitioningMethod { public: virtual void addConstraints ConstraintManager& cm)= 0; virtual bool hasMoreConstraints()= 0; virtual void setQuery(const Query& q)= 0; virtual〜Pa ..
发布时间:2016-10-30 03:53:29 C/C++开发