首页 > 编程语言 >C++ 基类构造函数内调用虚函数会怎样

C++ 基类构造函数内调用虚函数会怎样

时间:2024-11-20 19:34:10浏览次数:1  
标签:函数 C++ 基类 CatBase show1 构造函数

class CatBase
{
public:
    CatBase()
    {
        show1();
    }
    ~CatBase()
    {
    }
    //virtual void show1() = 0; // 如果不实现,运行时会错误
    virtual void show1()
    {
        cout << "cat base ..." << '\n';
    }
};

class Cat :CatBase
{
public:
    Cat()
    {
    }
    void show1()
    {
        cout << "cat ..." << '\n';
    }
};


int main()
{
    Cat cat;

    system("pause");
    return EXIT_SUCCESS;
}

输出:

cat base ...   

不会上升到派生类,因为派生类还没开始构造呢。

Note:

如果构造函数或析构函数调用了某个虚函数,则我们应该执行与构造函数或析构函数所属类型相对应的虚函数版本。

——《C++ Primer》 P557

标签:函数,C++,基类,CatBase,show1,构造函数
From: https://www.cnblogs.com/huvjie/p/18559051

相关文章

  • 检验 C++ 入门能力:试试亲手实现日期类吧!
    ......
  • C++中的初始化列表
    初始化参数列表用于在构造函数中初始化类的数据成员。语法:构造函数():属性1(值1),属性2(值2)......{}性质:1.只能在构造函数中使用2.引用或常量必须在初始化参数列表中初始化3.初始化的顺序和成员变量的顺序一致,与初始化参数列表中的顺序无关#include<iostream>#include<vect......
  • 31. C和C++混合开发
    一、C和C++混合开发    C++可以看作是C语言的增强版,在C的基础上扩展了更多的功能。一个C程序可以看作一个简单的C++程序。但是C++和C语言之间还是存在区别的。例如,C++支持函数名重载,而C不支持,因此编译器生成目标文件时,函数名在目标文件中的临时内部名......
  • 【Linux Ops】如何替换 libstdc++ 提升 GLIBCXX 版本
    【环境】kos5.8sp2,kernel5.10还是上一篇提到的那个软件环境,其依赖的GLIBCXX版本较高,因此在安装时给出了以下错误:xxx:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.29'notfound(requiredbyxxx)执行strings/usr/lib64/libstdc++.so.6|grepGLIBCXX,查看当前环境中......
  • Pylon C++ Programmer's Guide
    移步至PylonC++Programmer'sGuide观看效果更佳GettingStartedpylon编程指南是一个关于如何使用BaslerpylonC++API进行编程的快速指南。它可以与pylon示例代码一起使用,以帮助初学者入门。此外,APIrenfence提供了有关BaslerpylonC++接口的描述。接口的描述也可在pylon的......
  • 1.C++基础知识—指针篇
    #指针#变量#1.一个整型数 intnumber;2.一个指向整型数的指针 int* ptrToInt;3.一个指向指针的指针,它指向的指针是指向一个整型数int**ptrToPtrToInt;4.一个有10个整型数的数组intarry[10];5.一个有10个指针的数组,该指针是指向一个整型数的int*ptrArray[10];6......
  • C++基础知识-const篇
    1.const作用在C++中,const 关键字用于定义常量,确保某些数据不会被修改。const的作用包括但不限于以下几点:1.定义常量值:  const 可以用来定义不会改变的常量值  constintMAX_USERS=100;2.修饰指针:  const可以修饰指针,以限制指针指向的数据是否可以被修改......
  • 【c++笔试强训】(第十六篇)
    目录游游的⽔果⼤礼包(枚举)题目解析讲解算法原理编写代码买卖股票的最好时机(⼆)(贪⼼)题目解析讲解算法原理编写代码游游的⽔果⼤礼包(枚举)题目解析1.题目链接:登录—专业IT笔试面试备考平台_牛客网2.题目描述题目描述游游有nnn个苹果,mmm个桃子。她可以把2个苹......
  • (2024最新毕设合集)基于SpringBoot的校园共享厨房信息系统-72647|可做计算机毕业设计JAV
    目 录摘要第一章 绪论1.1选题背景与意义1.2研究现状1.3论文结构与章节安排第二章系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分......
  • C++(构造函数和创建类对象)
    一)构造函数的概念构造函数是一种特殊的成员函数,用于在创建对象时初始化对象的数据成员。它的主要目的是确保对象在使用前被正确地初始化,使得对象处于一个合理的初始状态。构造函数的名称与类名相同,没有返回类型(包括void)。例如,对于一个名为MyClass的类,其构造函数可以写成MyClass()......