基于 php 示例的 C++ 中数据结构的多态性示例

2024-04-04

我正在学习多态,并且熟悉php。

我发现了这个很好的例子https://stackoverflow.com/a/749738/80353 https://stackoverflow.com/a/749738/80353。转载如下。

如何用 C++ 编写相同的代码?

我自己编写它时遇到问题,因为我相信(我可能是错的)C++ 中的数据结构是严格的。

C++ 中的链表或数组中的所有元素必须具有相同类型。

所以我相信你需要将猫和狗作为它们的基类存储到数据结构中。

那么,如何将这段 php 代码片段写入使用严格数据结构(只能存储 1 种数据类型的元素)的 C++ 代码片段呢?

class Animal {
    var $name;
    function __construct($name) {
        $this->name = $name;
    }
}

class Dog extends Animal {
    function speak() {
        return "Woof, woof!";
    }
}

class Cat extends Animal {
    function speak() {
        return "Meow...";
    }
}

$animals = array(new Dog('Skip'), new Cat('Snowball'));

foreach($animals as $animal) {
    print $animal->name . " says: " . $animal->speak() . '<br>';
}

好吧,您可以使用纯虚方法将指针与抽象类一起使用,如下所示:

class Polygon {
    public:
        virtual void setValue(int k) = 0;    // Declaring our pure virtual method.
};

class Rect : public Polygon {
    public:
        virtual void setValue(int k); = 0;   // Declaring the pure virtual method again.
};

Rect::setValue(int k) {    // You must create a setValue() method for every class, since we made a pure virtual method. This is the Polymorphic part.
    // Code in here that setValue() method executes.
    int foo = a;
    std::cout << foo << std::endl;
}

现在您可以访问声明对象指针的方法。

int main() {
    Polygon* pSomePolygon = nullptr;   // Assuming using C++11.
    Rect* pRect = new Rect;    // Declare our object.

    pSomePolygon = pRect;    // Point our pointer to object 'pRect'.

    pSomePolygon->setValue(18);    // Pointer accesses pRect and uses the pure virtual method.
    delete pRect;    // Clean up!

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

基于 php 示例的 C++ 中数据结构的多态性示例 的相关文章

随机推荐

  • 当片段更改时如何更新视图?

    我有一个活动 其中有 2 个 sherlockfragment 前两个页面显示带有自定义列表视图的片段 这些视图是使用 AsyncTask 从服务器的 xml 构建的 但是 当应用程序运行时 仅显示一个列表视图 另一页只是空白 public
  • new URL() - WHATWG URL API

    我正在摆弄节点 并试图获取 URL 类的实例 因为这些方便的属性 喜欢 const URL require url http createServer request response gt let uri new URL request
  • 如何生成具有给定限制和平均值的随机数? [复制]

    这个问题在这里已经有答案了 我想生成一系列 30 个随机数 其中上限为 40 下限为 12 平均值为 23 总结 n 30 最小值 12 最大值 40 平均值 23 提前致谢 如果您想要连续分布 您可以获得最小值和最大值之间的任何浮点值 一
  • 如何在 UML 中指定“一次一个”?

    我正在制作一个类图Classroom and a Course class 我怎样才能表明Classroom只能有一个Course一次在其中吗 我知道我可以使用多重性来指定教室可以只开设一门课程 但这并不能完全指定在不同时间可以有除该一门课
  • 列表中情侣的乘积之和

    我想找出列表中情侣的乘积之和 例如给出一个列表 1 2 3 4 我想要得到的是答案 1 2 1 3 1 4 2 3 2 4 3 4 我使用暴力来完成此操作 它会给我带来非常大的列表的超时错误 我想要一种有效的方法来做到这一点 请告诉我 我该
  • setFont(Times-Roman) 不能缺少 T1 文件吗?

    我有错误 Can t find pfb for face Times Roman Error reportlab graphics renderPM RenderPMError Can t setFont Times Roman missi
  • 使用 StreamReader 异步解码 utf-8

    我正在习惯 asyncio 并发现任务处理非常好 但将异步库与传统 io 库混合起来可能很困难 我当前面临的问题是如何正确解码异步 StreamReader 最简单的解决方案是read 字节字符串块 然后解码每个块 请参阅下面的代码 在我的
  • React Native 嵌套 ScrollView 锁定

    我正在尝试将 ScrollViews 嵌套在 React Native 中 带有嵌套垂直滚动条的水平滚动条 这是一个例子 var Test React createClass render function return
  • 使用 urllib2 或任何其他 http 库读取超时

    我有用于读取这样的网址的代码 from urllib2 import Request urlopen req Request url for key val in headers items req add header key val r
  • 如何测试 Stripe 中的订阅续订流程?

    我想测试我的应用程序在订阅付款已完成 或失败 时对来自 stripe 的 webhook 事件的处理 这是我到目前为止所尝试过的 设置新订阅 将用户的信用卡更新为可以添加到帐户但无法实际扣款的信用卡 将试用结束日期更改为一秒内 等待几秒钟
  • 如何使用 Arc 和 Weak 创建循环引用?

    我有两个结构 struct A map HashMap
  • 为什么drawRect:在不调用[superdrawrect:rect]的情况下工作?

    我在我的视图之一中重写了drawRect 即使不调用 superdrawrect rect 它也能工作 这是如何运作的 void drawRect CGRect rect CGContextRef context UIGraphicsGet
  • Angular `HttpClient` `.get()` 泛型可以有非简单属性类型吗? (例如“字符串”或“数字”除外)

    我花了一天时间研究这个主题 但没有找到任何线索 我所找到的只是omission 因为我读过的任何内容都表明你can使用非简单类型 我的意思是string and number 用于调用 Angular 4 4 时的通用接口 shape Ht
  • 如何正确配置照片文件以匹配 html input.files 的格式与 Cordova 相机?

    我有一个现有的网络服务 可以处理用户输入的照片 以及其他一些数字和文本数据 照片是通过输入标签捕获的
  • 使用 PHP 变量执行 Python 脚本

    我正在编写一个简单的应用程序 它使用表单中的信息 通过 POST 将其传递到 PHP 脚本 该脚本执行 python 脚本并输出结果 我遇到的问题是我的 python 脚本实际上并未在传入参数的情况下运行 process3 php 文件
  • .NET 有没有好的图像识别库?

    我希望能够将网络摄像头拍摄的图像与计算机上存储的图像进行比较 该库不需要百分百准确 因为它不会用于任何关键任务 例如警方调查 我只想要一些我可以使用的东西 我尝试过一个演示项目CodeProject 的图像识别 http www codep
  • CUDA错误:在python中使用并行时初始化错误

    我的代码使用 CUDA 但运行速度仍然很慢 因此 我将其更改为使用 python 中的多处理 pool map 并行运行 但我有CUDA ERROR initialization error 这是函数 def step M self ite
  • 以 Fortran 连续顺序重塑 numpy.array

    我有一个如下所示的数组 from numpy import a array 1 2 3 4 5 6 7 8 9 我想得到如下结果 1 4 7 2 5 8 3 6 9 因为我有一个很大的数组 所以我需要一种有效的方法来做到这一点 最好就地重塑
  • 来自 Blackberry Phonegap 应用程序的 Ajax 请求

    我正在为 Blackberry 操作系统 5 0 及更高版本 创建一个应用程序 我过去没有任何移动开发经验 我创建了一个运行良好的示例应用程序 按照中提到的准则http wiki phonegap com w page 31930982 G
  • 基于 php 示例的 C++ 中数据结构的多态性示例

    我正在学习多态 并且熟悉php 我发现了这个很好的例子https stackoverflow com a 749738 80353 https stackoverflow com a 749738 80353 转载如下 如何用 C 编写相同