是否可以通过在基类中添加新的虚函数来破坏代码?

2024-03-08

是否可以通过简单地向基类添加新的虚函数来改变程序的观察到的行为?我的意思是不必对代码进行其他更改。


以下程序打印OK。取消注释虚函数B它将开始打印CRASH!.

#include <iostream>

struct B
{
    //virtual void bar() {}
};

struct D : B
{
    void foo() { bar(); }
    void bar() { std::cout << "OK" << std::endl; }
};

struct DD : D
{
    void bar() { std::cout << "CRASH!" << std::endl; }
};

int main()
{
    DD d;
    d.foo();
    return 0;
}

问题是在虚函数之后B::bar()引入了调用的绑定bar() in D::foo()由静态变为动态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以通过在基类中添加新的虚函数来破坏代码? 的相关文章

随机推荐

  • 调试使用 pm2 运行的应用程序

    应用程序由以下人员运行 pm2 start app js or pm2 start config json 我想使用 node inspector 在本地调试我的应用程序 我添加了debug争论 pm2 start node args de
  • UIBarButtonItem 图像应该有多大?

    我正在创建自己的自定义 按日期排序 和 按数字排序 按钮 我计划将它们作为右侧按钮放置在导航栏中 我的图像应该有多大才能适当地填充空间 UIBarItem https developer apple com documentation ui
  • 如何使用 php 在 XML 文件中进行搜索?

    不知道有没有办法在xml文件中搜索 例如 我想要得到Value使用Name from AttrList和产品代码 是否可以 这就是我的 xml 的样子
  • jQuery 将类添加到图像链接,而不会在链接传递变量时弄乱

    好的 所以我使用了一些 jquery 来选择所有 a 页面上的标签以及它们是否链接到图像文件以添加zoom出于灯箱的目的对其进行类处理 这是有效的代码 document ready function a href png a href gi
  • List<>.IndexOf 是按引用还是按值进行比较?

    List
  • ant+cpptasks 与 scons 与 make

    我正在调查scons http www scons org 我只是想确保在我将大量脑细胞投入到完全不同的事物之前我知道替代方案是什么 我过去一直在使用 GNU make 但从来没有对它感到特别满意 特别是 为什么 Ant 没有更频繁地用于
  • 使用固定装置返回值作为 mark.parametrize() 中的值

    我的问题是 是否可以使用夹具的返回值作为参数化中的值 问题是 我想动态获取参数化的可能值 例如 虚拟服务器上的可用系统 当其中一个设备创建虚拟服务器时 我可以访问这些 测试看起来像这样 伪代码 conftest py pytest fixt
  • iOS 7:自定义容器视图控制器和内容插入

    我有一个封装在导航控制器中的表视图控制器 当通过以下方式呈现时 导航控制器似乎会自动将正确的内容插入应用到表视图控制器presentViewController animated completion 谁能向我解释一下它到底是如何工作的 但
  • Paypal 结帐中无法访问 iframe 元素 id 的异常处理

    我有一个电子商务网站 当我尝试下订单时 它会重定向到 Paypal 页面 当我以 Paypal 用户身份登录时 它会重定向到另一个结账屏幕 我在其中尝试使用 selenium Web 驱动程序进行自动化 在此步骤中 出现以下异常 我尝试使用
  • 如何在数据库中保存跟踪折线?

    我创建了一个功能 可以跟踪用户的路线并创建折线 我一直在尝试将其保存到 Firebase 路线 ID 路线名称 纬度 经度 我使用的方法是 每次位置更改时 用户的新纬度和经度都会保存到 Firebase 用户设置的路线名称和 当前 静态路线
  • 在 Play Slick 中分配动态注入的数据库名称

    我有以下 Play Slick DAO 课程 注意数据库配置是一个常量control0001 DAO 有一个功能readUser根据用户 ID 读取用户 class UsersDAO Inject NamedDatabase control
  • Angular 5 HttpClient 与之前的 Http 相比有哪些优势?

    我阅读了官方升级指南 上面写着 因为 HttpClient 得到广泛采用 我们决定 但是这个 HttpClient 带来的真正好处是什么 我正在考虑尝试一下 但中途感到困惑 因为我不知道升级后这些需要发生什么 从 angular http
  • 使用 nginx 的子目录中的 CakePHP(重写规则?)

    不久前我设法让它工作 但是当我回到我开始的 cakephp 项目时 似乎我最近对 nginx 所做的任何更改 或者可能是最近的更新 都打破了我的重写规则 目前我有 worker processes 1 events worker conne
  • Angular cli 项目中的绝对路径

    如何在 Angular cli 生成的项目中使用绝对路径 所以我有这条路 src gt app gt shared我想写import from shared ffdsdf my module ts 代替 shared ffdsdf my m
  • 将 dynamodb 表复制到 hive 的 pyspark 代码问题:不允许操作

    我正在尝试使用 pyspark 代码从 aws emr 上的 Dynamodb 创建外部配置单元表 当我在 hive 提示符下执行查询时 该查询工作正常 但当我将其作为 pyspark 作业执行时 该查询会失败 代码如下 from pysp
  • 本地开发主机的通配符

    我最近在多个项目之间切换 所有这些都在相同的IP上本地运行 但具有不同的域 实际上它总是 local like foo local bar local等等 我可以继续将它们添加到我的 etc hosts文件 但这不是很干净的方式 这就是为什
  • 我无法在 Android AVD Manager 中创建模拟器

    我正在尝试创建一个 Android 模拟器 当我打开 AVD 管理器并尝试创建一个模拟器时 它一直显示 未选择目标 即使我选择了目标 http bit ly 15vr9fk http bit ly 15vr9fk 面临同样的问题 我检查了A
  • 未收到 Microsoft Graph 更改通知

    我想订阅用户删除 以便每当在 Azure AD 中删除用户时 我们的应用程序都可以做出相应的反应 这是我的订阅请求 const now new Date const threeDaysLater new Date now getTime 3
  • unix fork exec 序列真的像听起来那么昂贵吗?

    我正在读关于fork and exec对于考试 我的书说 每当需要在 UNIX 系统中运行一个新的 不同的 进程时 您都会分叉当前进程 然后是execve 然而 它也说 每当fork被调用时 父进程的整个内存映像被复制到新进程 那么我的问题
  • 是否可以通过在基类中添加新的虚函数来破坏代码?

    是否可以通过简单地向基类添加新的虚函数来改变程序的观察到的行为 我的意思是不必对代码进行其他更改 以下程序打印OK 取消注释虚函数B它将开始打印CRASH include