c++父类指针指向子类

news2024/11/17 17:42:29

有一个常见的c++题,就是父类和子类的构造函数和析构函数分别调用顺序:

  • 父类构造函数
  • 子类构造函数
  • 子类析构函数
  • 父类析构函数

以及父类中的函数在子类中重新实现后,父类指针指向子类后,该指针调用的函数是父类中的还是子类中的(子类的)。
通过一个例子说明:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

class Parent {
public:
    virtual void func() {
        std::cout << "Parent." << std::endl;
    }
    Parent()
    { 
        std::cout << "Parent construct.\n" << std::endl;
    }
    ~Parent()
    { 
        std::cout << "Parent destory.\n" << std::endl;
    }
};

class Son : public Parent {
public:
    void func() {
        std::cout << "Son." << std::endl;
    }
    Son()
    {
        std::cout << "Son construct.\n" << std::endl;
    }
    ~Son()
    {
        std::cout << "Son destory.\n" << std::endl;
    }
};

int main(int argc, char* argv[]) {
    Parent *parent1 = new Parent();     // Parent construct.
    Parent *parent2 = new Son();        // Parent construct.    Son construct.
    Son *son = new Son();               // Parent construct.    Son construct.

    parent1->func();                    // Parent.
    parent2->func();                    // Son.
    son->func();                        // Son.

    delete parent1;                     // Parent destory.
    delete parent2;                     // Parent destory.
    delete son;                         // Son destory.   Parent destory.

    return 0;
}

在这里插入图片描述
2024年5月11日18:39:54
今夜偏知春气暖,虫声新透绿窗纱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1665164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【GlobalMapper精品教程】079:投影坐标系转地理坐标系(UTM转WGS1984/2000)

文章目录 一、矢量UTM转WGS1984/20001. UTM转WGS19842. UTM转CGCS2000二、栅格UTM转WGS1984/2000一、矢量UTM转WGS1984/2000 加载配套实验数据(data079.rar)中的矢量数据,如下所示: 查看源坐标系:双击图层的,图层投影选项卡,为UTM投影,Zone48N。 设置系统坐标系:点击…

【MATLAB源码-第206期】基于matlab的差分进化算法(DE)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 差分进化算法&#xff08;Differential Evolution, DE&#xff09;是一种有效的实数编码的进化算法&#xff0c;主要用于解决实值函数的全局优化问题。本文将详细介绍差分进化算法的背景、原理、操作步骤、参数选择以及实际应…

2024数维杯数学建模竞赛A题完整代码和思路论文解析

2024数维杯数学建模完整代码和成品论文已更新&#xff0c;获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/bgic2nbxs2h41pvt?singleDoc# 2024数维杯数学建模A题34页论文已完成&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&…

Qt之常用控件一

Widget常见属性及其作用 属性作用enabled 设置控件是否可使⽤. true 表⽰可⽤, false 表⽰禁⽤ geometry 位置和尺⼨. 包含 x, y, width, height 四个部分. 其中坐标是以⽗元素为参考进⾏设置的. windowTitle 设置 widget 标题 windowIcon 设置 widget 图标 windowOpa…

【姿态解算与滤波算法】

姿态解算 一、主线 姿态表示方式&#xff1a;矩阵表示&#xff0c;轴角表示&#xff0c;欧拉角表示&#xff0c;四元数表示。 惯性测量单元IMU&#xff08;Inertial Measurement Unit&#xff09;&#xff1a;MPU6050芯片&#xff0c;包含陀螺仪和加速度计&#xff0c;分别测…

为啥我说英语能决定程序员的天花板?

看到知乎有这样的一个问题&#xff0c;作为程序员的你&#xff0c;大学最后悔没有好好学哪门课&#xff1f; 很多人回答《软件工程》、《线性代数》、《微积分》等&#xff0c;各种都有。。 但我觉得&#xff0c;这些课都很重要&#xff0c;但没学好不妨碍自学。 其实对程序…

芯课堂 | 如何使用SWM系列产品的TIMER功能(一)

01 TIMER简介 TIMER是一种定时器工具&#xff0c;用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。 我司的SWM系列单片机提供的TIMER个数和功能有些微差别&#xff0c;为了让您更加简单的使用这一功能&#xff0c;下面将以SWM190为例&#xff0…

高效视频剪辑:视频批量调色,如何利用色调调整提升效率

在视频剪辑的后期处理中&#xff0c;调色是一个至关重要的环节。它不仅能够改变视频的整体氛围和风格&#xff0c;还能够突出视频的重点&#xff0c;增强观众的视觉体验。然而&#xff0c;对于大量的视频素材进行逐个调色处理&#xff0c;无疑会耗费大量的时间和精力。我们可以…

在IDEA中使用 Spring Initializr 新建 spring boots 项目

【在IDEA中使用 Spring Initializr 新建 spring boots 项目 - CSDN Apphttp://t.csdnimg.cn/mVs5P Spring Initializr 创建spring boots项目 添加到pom.xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connec…

鸿蒙开发接口Ability框架:【(窗口扩展能力)】

窗口扩展能力 WindowExtensionAbility基于ExtensionAbility&#xff0c;WindowExtensionAbility中展示的内容作为一个控件(AbilityComponent)内容展示在其他应用窗口中&#xff0c;实现在一个窗口中展示多个应用程序内容的功能。 说明&#xff1a; 本模块首批接口从API versio…

Android 13 aosp 默认关闭SELinux

通过adb修改 adb root adb shell setenforce 0 // 开SELinux&#xff0c;设置成模式permissive adb shell setenforce 1 // 关SELinux&#xff0c;设置成模式enforce adb shell getenforce // 获取当前SELinux状态源码修改 Android_source/system/core/init/selinu…

前端笔记-day05

文章目录 01-结构伪类选择器02-结构伪类选择器-公式用法03-伪元素选择器04-盒子模型-组成05-盒子模型-边框线06-盒子模型-单方向边框线07-盒子模型-内边距08-盒子模型-padding多值写法09-盒子模型-尺寸计算10-盒子模型-版心居中11-清除默认样式12-元素溢出overflow13-外边距合并…

Redis如何避免数据丢失?——RDB

目录 1. RDB机制的配置 2. fork()函数和写时复制(Copy On Write&#xff09; 什么是Copy On Write 系统fork中使用Copy On Write机制 3. RDB文件结构 RDB文件内容和内容顺序 InfoAuxFields是rdb信息数据 数据库数据 数据 数据存储格式 字符串编码 操作码 4. RDB的2…

Coursera吴恩达深度学习专项课程01: Neural Networks and Deep Learning 学习笔记 Week 03

Neural Networks and Deep Learning Course Certificate 本文是学习 https://www.coursera.org/learn/neural-networks-deep-learning 这门课的笔记 Course Intro 文章目录 Neural Networks and Deep LearningWeek 03: Shallow Neural NetworksLearning Objectives Neural Ne…

第四百九十八回

文章目录 1. 概念介绍2. 使用方法2.1 固定样式2.2 自定义样式 3. 示例代码4. 内容总结 我们在上一章回中介绍了"GetMaterialApp组件"相关的内容&#xff0c;本章回中将介绍使用get显示SnackBar.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在介…

windows设置软件开机自启动

winr 输入 shell:startup C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup把要开机自动启动的程序的快捷方式放进来 输入快捷键 ctrlshiftesc 打开任务管理器 同时在任务管理器也可以看到

17-LINUX--线程与fork()

一.多线程程序fork() 多线程出现fork()后&#xff0c;只复制一条执行路径&#xff0c;是fork()所在的那条执行路径 主程序fork()示例代码&#xff1a; include<stdio.h> #include<stdlib.h> #include<string.h> #include<pthread.h> #include<un…

ERA5数据的区别

ERA5 hourly data on single levels from 1940 to present 链接 ERA5是欧洲中期天气预报中心(ECMWF)的第五代全球气候和天气再分析产品&#xff0c;涵盖过去80年的数据。数据可从1940年开始获取&#xff0c;ERA5取代了ERA-Interim再分析产品。 再分析将全球范围内的模型数据与…

39-5 入侵检测系统(IDS)- 安装配置IDS(注意我没安装成功,阅读需谨慎)

官网:Snort Rules and IDS Software Download 参考: (这位大佬分享了安装包下载链接):https://www.cnblogs.com/taoyuanming/p/12722263.html (安装过程参考这位大佬):Snort 安装与配置(CentOS 7)_centos 7 snort-CSDN博客一、安装 IDS(我这里在 CentOS 7 虚拟机中安…

毕业论文凑字数——关于IVR自动语音应答交互式电话导航自动总机等等概念的一些剖析

目录 IVR毕业论文的讨巧思路IVR自动语音应答IVR的使用流程IVR的各种应用IVR的基本配置 一个小朋友的毕业论文要凑字数&#xff0c;所以推荐她讲一讲IVR&#xff0c;因为IVR可以翻译的名字很多&#xff0c;比如交互式语音应答&#xff0c;自动语音应答&#xff0c;自动语音服务&…