PHP 中 C++ 的虚函数相当于什么?

2024-01-25

Is it abstract function xxx?

我刚刚做了一个测试,似乎表明私有方法也是虚拟的?

class a {
 private function test()
 {
  echo 1;
 }
}

class b extends a {
 private function test()
 {
  echo 2;
 }
 public function call()
 {
  $this->test();
 }
}

$instance = new b;
$instance->call();

输出是2


在 PHP 中,所有非私有函数都是虚拟的,因此无需显式将它们声明为虚拟。

将成员函数声明为abstract只是意味着基类无法提供实现,但所有派生类都应该提供。将方法定义为抽象方法与在 C++ 中执行以下操作相同

virtual void foo() = 0;

这仅仅意味着派生类must实施foo();

EDIT:关于编辑的问题

b::call()无法访问a::test()。因此,当调用私有函数时,只会调用调用该函数的类中的函数。

EDIT: 关于评论:

(来自维基百科)

在面向对象编程中,虚函数或虚方法是一种函数或方法,其行为可以在继承类中被具有相同签名的函数覆盖。

由于 C++ 中明确说明您所付出的代价的想法,您必须将函数声明为虚拟函数,以允许派生类重写函数。

class Foo{
public:
    void baz(){
        std::cout << "Foo";
    }
};
class Bar : public Foo{
public:
    void baz(){
        std::cout << "Bar";
    }
};

int main(){
    Foo* f = new Bar();
    f->baz(); //baz is not virtual in Foo, so the output is Foo
}

将 baz 更改为虚拟

class Foo{
public:
    virtual void baz(){
        std::cout << "Foo";
    }
};
//Same Bar declaration

int main(){
    Foo* f = new Bar();
    f->baz(); //baz is virtual in Foo, so the output is Bar as it will call the derived function
}

注意,如果变量f上述示例中的类型为Bar* or Bar没关系,如果Foo::baz()是否是虚拟的,因为预期的类型是已知的(程序员明确提供了它)

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

PHP 中 C++ 的虚函数相当于什么? 的相关文章

  • 在 Windows 上查看 PHP 文件夹

    我正在编写一个简单的 PHP 脚本来监视文件夹及其子文件夹的任何更改 新文件 修改 删除 然后执行操作 我将使用 Windows 上的命令行运行此脚本php f script php 我一直在寻找一种在 Windows 上观看具有 PHP
  • 由于未定义符号,PECL solr 未加载:curl_easy_getinfo

    我正在尝试加载 PECL solr 扩展 我尝试使用 pecl install solr 并下载并使用 phpize configure make 来安装它 在这两种情况下 扩展安装时都没有错误 但在 apache 重新启动后 或在命令行上
  • 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

    我正在尝试设置一个 kernel controller 侦听器 以便在函数返回 true 时重定向到另一个路由 我有可用的路线 但无法使用此路线设置控制器 event gt setController 我收到以下错误 FilterContr
  • 如何在 Zend Framework 中存储 cron 作业的脚本?

    因为 ZF 的所有 URL 都依赖于 mod 重写 所以我并不清楚应该在哪里存储用于 cron 作业的本地脚本 有人有什么建议 或者有 正式接受 的方式吗 我用模块化目录结构 http framework zend com manual e
  • 覆盖供应商自动加载编辑器

    有没有办法让您创建的自动加载文件在调用供应商自动加载之前运行 我们似乎遇到了 SimpleSAML 的自动加载覆盖我们创建的自动加载文件之一的问题 我是 Composer 的新手 似乎无法在网上找到任何解决方案 我尝试将我们的自动加载文件包
  • 使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

    我有一个带有可编辑字段的 PDF 我希望将 HTML 表单中的值传递到此 PDF 中 我尝试过使用 FPDF 并且它有效 但是将值传递到 PDF 后 pdf 中的字段不再可编辑 另一个缺点是 在将值传递到 PDF 时 我们必须为每个字段指定
  • strlen()==0 和empty()之间有区别吗?

    我正在查看其他人编写的一些表单验证代码 我看到了这个 strlen 0 当测试表单变量是否为空时 我使用empty 功能 一种方法比另一种方法更好吗 它们在功能上等效吗 strlen是获取字符串中的字符数 同时empty用于测试变量是否为空
  • TOMCAT 6 中的 PHP - 异常

    我一直在努力融入PHP in APACHE TOMCAT 6依照指示second answer为了QUESTION https stackoverflow com questions 779246 run a php app using t
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • CakePHP Xml 实用程序库触发 DOMDocument 警告

    我正在使用 CakePHP 在视图中生成 XMLXML核心库 http book cakephp org 2 0 en core utility libraries xml html xml Xml build data array ret
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • PHP7构造函数类名

    我有一个 Laravel 4 2 应用程序 它可以与 PHP5 一起使用 没有任何问题 由于我安装了一个运行 PHP7 的新 vagrant box 一旦我运行一个模型 其中函数名称与类名称 关系函数 相同 就会出现错误 如下所示
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • 为什么 PHP 中不允许“传统”类型提示?

    刚刚发现类型提示 http php net manual en language oop5 typehinting phpPHP 中允许 但不适用于整数 字符串 布尔值或浮点数 为什么 PHP 不允许对整数 字符串等类型进行类型提示 从 P
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs

随机推荐

  • 无法同时处理点击和触摸事件

    我正在尝试处理按钮上的触摸事件和单击事件 我执行以下操作 button setOnClickListener clickListener button setOnTouchListener touchListener 当注册任何一个侦听器时
  • Windows 每种语言版本的默认代码页

    在哪里可以找到有关 Windows 每种语言版本的默认代码页的信息 即 ANSI 每种语言版本的代码页 我找到了Windows 支持的代码页 http msdn microsoft com en us goglobal bb964654 a
  • 构建 AOSP 并添加具有运行时权限的系统应用程序

    我在 Android 6 AOSP 上工作 我能够构建添加应用程序作为系统应用程序 但现在我想在这个系统应用程序上默认添加运行时权限 这样应用程序就可以启动而无需要求用户验证权限 你知道我该怎么做吗 谢谢你的帮助 如果您的应用程序具有特权
  • 为什么 getSelectedItem 返回 null?

    我刚刚学习 OOP 对这篇基本文章感到抱歉 我不知道为什么当我尝试获取所选项目的值时它返回 nullJComboBox public class AddEmployee extends javax swing JInternalFrame
  • 所见即所得与所见即所得

    在基于 Web 的应用程序中 哪一个更好 更理想 Edit 实际上我正在开发一个社区网站 所以用户的水平可能会有所不同 听说 WYSIWYG 编辑器存在 XSS 安全问题 我也不熟悉所见即所得编辑器及其功能 据我所知WYSIWYM 编辑器中
  • python-从json对象中选择唯一的键值

    我有一个json回复 data id 1 name Tom age 24 id 2 name Nick age 45 id 3 name Harry age 18 id 1 name Tom age 29 count 4 而且我要outpu
  • Heroku“psql:致命:剩余的连接插槽保留用于非复制超级用户连接”

    我正在 Heroku 上开发一个带有 Postgresql 后端的应用程序 当我尝试从 CLI 和在服务器上加载页面访问数据库时 我会定期收到此错误消息 psql FATAL remaining connection slots are r
  • 结构体作为 Go 映射中的键

    我正在研究使用结构作为 golang 映射中的键 该结构中的字段也应该是映射 这似乎与提供的文档相悖here http blog golang org go maps in action这表示只有具有可比较字段的结构 and 可以位于用作映
  • 什么是 weblogic.socket.Muxer?

    你们中有人了解 weblogic socket Muxer 在 WebLogic 8 1 中的用途吗 我经常在线程转储中看到类似于以下的堆栈跟踪 ExecuteThread 0 for queue weblogic socket Muxer
  • HttpContext.Current.User 始终为 null

    我有一个 WCF 服务 它有一个方法可以返回正在使用该服务的 Silverlight 客户端的 Windows 用户名 WCF 服务使用 basicHttpBinding 并将 TransportCredentialOnly 模式设置为 W
  • 与适用于 Mac 的三星智能电视 sdk 4.1 配合使用

    我有一个愚蠢的问题 我安装 2013 Samsung TV SDK 4 1 MacOS pkg 并下载 2013 Smart TV Emulator 4 1 VB zip 和虚拟盒的安装 ova 文件 所以我想终于一切都完成了 但不是 当我
  • 如何让 JTIdy 使 HTML 文档格式良好?

    我正在使用 JTidy v r938 我正在使用这段代码来尝试清理页面 final Tidy tidy new Tidy tidy setQuiet false tidy setShowWarnings true tidy setShowE
  • Rails 在集成测试中设计经过身份验证的路由

    我想测试应用程序中的每条路线 并了解到我应该在集成测试中执行此操作 在 ruby on Rails 中测试路线的位置 https stackoverflow com questions 5290245 where to test route
  • Python:如何在给定时间调用字典包含的可调用对象?

    我正在使用 python 中的字典对象 其中包含许多键 它们的一些关联值类型是可调用类型 就像是 dico key1 1 key2 cars key3
  • Spark Streaming:接收器故障后如何不重新启动接收器

    我们正在使用自定义 Spark 接收器 它从提供的 http 链接读取流数据 如果提供的http链接不正确 则接收失败 问题是spark会不断重启接收器 并且应用程序永远不会终止 问题是如果接收器失败 如何告诉 Spark 终止应用程序 这
  • DIV 水平和垂直居中[重复]

    这个问题在这里已经有答案了 有没有办法垂直和水平居中 DIV但是 这一点很重要 当窗口小于内容时 不会剪切内容 div 必须具有背景颜色以及宽度和高度 我总是使用绝对定位和负边距将 div 居中 如提供的示例中所示 但它有一个问题 就是把上
  • 按条件动态搜索

    我在用QueryDSL with Spring Data Jpa我想执行一些动态搜索 我遵循这个Answer https stackoverflow com a 23896303 3756879没关系BooleanBuilder但就我而言
  • 以编程方式打开和关闭 Chart.js 工具提示

    Chart js 2 2 1 知道如何触发当我将鼠标悬停在数据点上时运行的代码以及当我将鼠标移开时运行的代码吗 我需要以编程方式显示和隐藏图表的工具提示 openTip oChart datasetIndex pointIndex how
  • 如何在 Windows Powershell 中获取 Azure Active Directory 用户名?

    我正在尝试从 Windows 10 Azure Active Directory AAD 加入的计算机上的 Powershell 获取当前的 Windows 用户名和域 我已经尝试过以下提示这个问题 https stackoverflow
  • PHP 中 C++ 的虚函数相当于什么?

    Is it abstract function xxx 我刚刚做了一个测试 似乎表明私有方法也是虚拟的 class a private function test echo 1 class b extends a private funct