首页 > 编程语言 >c++的面对对象 的 虚函数

c++的面对对象 的 虚函数

时间:2024-06-07 23:30:04浏览次数:11  
标签:makeSound 函数 class c++ 面对 void Animal include public

#include <iostream>
#include <string>

class Animal {
public:
    virtual void makeSound() = 0; // 纯虚函数,所有的动物都应该提供自己的叫声
};

class Dog : public Animal {
public:
    void makeSound() override {
        std::cout << "Woof!" << std::endl;
    }
};

class Cat : public Animal {
public:
    void makeSound() override {
        std::cout << "Meow!" << std::endl;
    }
};

int main() {
    Dog dog;
    Cat cat;

    dog.makeSound(); // 输出: Woof!
    cat.makeSound(); // 输出: Meow!

    return 0;
}

虚函数的存在使得在父类中声明的方法  makesound()  能够在子类中  makesound()  被重新定义(覆盖),从而在运行时确定调用哪个方法的实现

标签:makeSound,函数,class,c++,面对,void,Animal,include,public
From: https://blog.csdn.net/weixin_74231706/article/details/139504639

相关文章

  • 【C++修行之道】类和对象(五)日期类的实现、const成员、取地址及const和取地址操作符重
    目录一、日期类的实现Date.h 1.1GetMonthDay函数(获取某年某月的天数) 问:这个函数为什么不和其他的函数一样放在Date.cpp文件中实现呢?1.2CheckDate函数(检查日期有效性)、Print函数(打印日期)1.3实现日期类的逻辑运算符重载<运算符的重载 ==运算符重载其他运算符重载......
  • C++AB类相互包含
    本文讨论我们该如何实现如下结构,而不会报错:classA{Bb;}classB{Aa;}我们知道编译器的执行顺序是从上到下的,当我们在A中使用B时,B还没有定义,甚至没有声明,所以在这里我们先给代码加上一段前向声明。classB;classA{Bb;}前向声明让编译器知道B类是......
  • 一篇文章带你搞懂C++引用(建议收藏)
    引用6.1引用概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。比如:李逵,在家称为"铁牛",江湖上人称"黑旋风"typedef是给类型取别名引用是给变量取别名注意:引用类型必须和引用实体是同种类......
  • 最大公约数(gcd())和最小公倍数(lcm())的c语言和c++详细解法
    最大公约数(gcd())和最小公倍数(lcm())最大公约数:定义:两个或多个整数共有的约数中最大的一个。例如:整数12和18,他们的公约数有1、2、3、6,其中最大的公约数是6。c语言解法:辗转相除法和更相减损法1、辗转相除法:思路:先求解较大的数除以较小的数的余数,再用较小的数除以前......
  • 神经网络-激活函数
    深度学习中的激活函数与神经网络初始化在深度学习中,激活函数和网络的初始化对于模型的性能和收敛性至关重要。本文将探讨不同类型的激活函数,并展示如何使用PyTorch进行神经网络参数的初始化。激活函数对比激活函数是神经网络中的关键组成部分,它们在神经元之间引入非线性,使得......
  • C++STL---list模拟实现
    本文我们模拟实现STL中的list,为了模拟实现list,实际上我们需要实现三个类,分别为:_list_node,_list_iterator,list。我们先看一下这三个类的基本组成,主要是看看每个类中包含的变量有什么:namespaceCYF{ //模拟实现list当中的结点类 template<classT> struct_list_node......
  • Mat的lambda方式像素高效遍历(C++11)
    Mat的lambda方式像素高效遍历(C++11)文章目录Mat的lambda方式像素高效遍历(C++11)前言一、Mat的lambda方式像素高效遍历二、代码实现总结前言图像遍历是图像处理中的经典操作,快速高效的进行像素遍历对性能的提升至关重要。一、Mat的lambda方式像素高效遍历OpenCV4......
  • 【c++基础】八数码难题
    说明在 3×3 的棋盘上,摆有八个棋子,每个棋子上标有 1 至 8 的某一数字。棋盘中留有一个空格,空格用 0 来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现......
  • c++入门笔记——头文件
    【头文件】c++中,一个程序开头必有头文件。头文件有许多个,它们的关系是并列的。<algorithm>:包含STL通用算法。<bitset>:包含bitset类模板。<cassert>:包含断言宏,如assert。<cctype>:包含字符处理函数。<cerrno>:定义错误码变量errno。<cfenv>:提供有关浮点环境的操作。......
  • [C++] 小游戏 能量1.0.2版本 zty出品
    大家好,欢迎来到今天的代码。我很荣幸能够在这里与大家见面。今天我想向大家介绍的是能量1.0.2版本。本次主要更新了人工智障的智商,没有以前那么笨了。先赞后看养成习惯CODE#include<bits/stdc++.h>#include<windows.h>usingnamespacestd;intrgzz(intlun,intdineng,......