C++父类和子类同名函数及继承关系---多态
C++当子类的成员函数与父类的成员函数重名时:
若父类没有virtual声明,子类函数可以和父类函数返回值不同,但函数名和参数列表必须相同.
则子类实例通过"."调用的是子类的函数
若子类想调用父类的函数,则需要使用 子类实例.父类::函数名() 的形式.
父类实例通过"."调用的是父类的函数
父类无法调用子类的同名函数
若通过指针->调用
则指针的类型 决定 调用哪个类的函数
父类地址强制转换为子类指针 也可以调用子类的函数.
若父类有virtual声明
虚函数就固定了函数的形式,所以子类函数和父类函数的返回类型也必须一致,否则报error: conflicting return type specified for ‘virtual int CDerive::show()’
则通过"."调用时,
子类实例调用子类函数,父类实例调用父类函数.
若通过"->"调用时,
则多态性成立,即当使用基类指针通过->调用时,根据指针的内容确实是基类地址还是子类地址,分别调用对应的函数.子类地址赋给父类指针,默认调用的是子类的函数,但可以通过 父类指针->父类::函数名() 明确调用父类的函数.
当用子类指针通过->调用时,将父类地址强制转换为子类指针,则默认调用的仍然是其本质的函数 即 父类的函数 可以通过 子类指针->子类名::函数名() 强制调用子类的函数.
将子类指针指向子类实例地址时,默认调用子类函数,可以通过 子类指针->父类名::函数名() 强制调用父类的函数.
当参数不一样时,则是两个函数,
此时通过->调用函数 取决于指针变量的类型决定调用哪个函数 而与其实质值无关.
子类类型的指针可以通过 子类指针->父类名::函数名() 强制调用父类函数.
子类继承时,重载应在函数后面加上override;前面的virtual可以不加,但最好加上,用于子子类的情况
C++父类和子类同名函数及继承关系---多态相关推荐
- java赋值兼容原则,多态问题抛出(赋值兼容性原则遇上父类与子类同名函数的时候)...
首先通过一个段代码来分析 #include class Parent//定义父类 { public: Parent(int a = 0) { this->a = a; } void print( ...
- C++ 继承: 父类与子类构造函数与析构函数的关系
C++ 继承: 父类与子类构造函数与析构函数的关系 一句话:调用子类构造函数时,父类的先调用,然后调用子类的构造函数.调用子类的析构函数时,先调用子类的析构函数,然后调用父类的析构函数. 例:点类,点 ...
- python多重继承 同名函数_python 继承与多重继承
当然,如果不支持python继承,语言特性就不值得称为"类".派生类定义的语法如下所示: . . . 名称 BaseClassName 必须定义于包含派生类定义的作用域中. 也允许 ...
- java根据父类找子类_在java中实现多态时,可以通过父类变量引用子类的对象。_学小易找答案...
[单选题]对于字符串s="java",下面哪个选项返回字符在字符串中'v'的位置( ). [简答题]汽车核保的主要内容 [判断题]在java中产生子类对象时,直接调用子类的构造方法 ...
- C++继承中父类和子类之间的同名覆盖
文章目录 1 C++继承中父类和子类的同名成员变量 1.1 父类和子类的同名成员变量 2 C++继承中父类和子类的同名成员函数 2.1 父类和子类中的同名成员函数 1 C++继承中父类和子类的同名成员 ...
- 使用函数指针实现父类函数调用子类函数的两种方式
父子类关系 对于继承关系中的父类和子类,我们可以说子类是父类的一种,子类继承了父类的属性和行为.因此,子类可以访问父类的所有非私有成员.相反,父类一般情况下是不能访问子类成员的.然而,我们可以通过一些 ...
- 继承中父类、子类构造器中的super. 和super()运用
1)第一种用法:super 关键字是父类对象的引用 package com.example;public class Person{ // 父类public String name="李四& ...
- Cpp 对象模型探索 / 继承关系下的虚函数手动调用
一.多态机理 #include <iostream>class Father { public:virtual void Func1(){std::cout << " ...
- c++父类调用子类的方法
方法一:虚函数使用 在c++中,父类和子类虚函数都有对应的虚函数表,如果子类重写了虚函数,就会将新写的这个函数的地址放到他自己的表内,并且通过父类的指针指向子类所开辟的空间,这样就可以调用子类的方法 ...
- 基类、派生类的同名函数
直接给出结论,便于以后查阅: 1.多个普通函数,同名时会重载 2.同一个类中的成员函数,同名时会重载 3.子类与父类的函数同名时,子类会覆盖掉父类所有的同名函数,如下例,子类的一个func_0( ), ...
最新文章
- 关于ospf区域认证以及虚链路之间的配置问题
- .Net 3.5新特性(1)Automatic Properties, Object Initializers, and Collection Initializers
- Python: ljust()|rjust()|center()字符串对齐
- 让皮肤美白细致的七大DIY - 生活至上,美容至尚!
- 1.7_heap_sort_堆的向下调整堆排序
- 汇编语言程序设计实验三
- 百度地图api的实现
- 五、03【Java IO模型】之字节流
- 【2018年11月12日】其他化学制品行业的股票估值
- C语言五子棋的项目背景,五子棋项目源码!
- 2022 ICPC Gran Premio de Mexico Repechaje 题解
- oracle insert汉字出错,oracle insert中文后,select是乱码
- 16系列显卡支持的计算机系统,GTX16系列显卡登场
- Java代码实现点赞功能
- 线上云展厅产品展区摆设技巧
- 堆外内存的介绍及释放
- 锚定物决定成败?四国央行数字货币对比
- 应急响应 | Windows事件ID及解释大全
- 申请专利的那些事——如何用电子客户端自己申请发明专利
- 速学堂Java300集第五章作业
热门文章
- 剖析 |数据现代化-富国银行的数据转型之路
- Julia: save 与 @save
- Kubernetes迁移指北 | 凌云时刻
- 【情感识别】基于matlab GUI SVM语音情感识别(带面板)【含Matlab源码 876期】
- 毕设题目:Matlab元胞自动机生命游戏
- 【土壤分类】基于matlab GUI多类SVM土壤分类【含Matlab源码 1398期】
- 四菱天线怎么加强_白话天线(2)---什么是天线?
- Pareidolia — AI的艺术教学
- pgm图像缩小C语言,C++将二进制(P5)图像转换为ascii(P2)图像(.pgm)
- 计算机系统结构自考知识点总结,自考《计算机系统结构》问答题总结(3)