C++当子类的成员函数与父类的成员函数重名时:

若父类没有virtual声明,子类函数可以和父类函数返回值不同,但函数名和参数列表必须相同.

则子类实例通过"."调用的是子类的函数

若子类想调用父类的函数,则需要使用 子类实例.父类::函数名() 的形式.

父类实例通过"."调用的是父类的函数

父类无法调用子类的同名函数

若通过指针->调用

则指针的类型 决定 调用哪个类的函数

父类地址强制转换为子类指针 也可以调用子类的函数.


若父类有virtual声明

虚函数就固定了函数的形式,所以子类函数和父类函数的返回类型也必须一致,否则报error: conflicting return type specified for ‘virtual int CDerive::show()’

则通过"."调用时,

子类实例调用子类函数,父类实例调用父类函数.

若通过"->"调用时,

则多态性成立,即当使用基类指针通过->调用时,根据指针的内容确实是基类地址还是子类地址,分别调用对应的函数.子类地址赋给父类指针,默认调用的是子类的函数,但可以通过 父类指针->父类::函数名()  明确调用父类的函数.

当用子类指针通过->调用时,将父类地址强制转换为子类指针,则默认调用的仍然是其本质的函数 即 父类的函数 可以通过 子类指针->子类名::函数名() 强制调用子类的函数.

将子类指针指向子类实例地址时,默认调用子类函数,可以通过 子类指针->父类名::函数名() 强制调用父类的函数.

当参数不一样时,则是两个函数,

此时通过->调用函数 取决于指针变量的类型决定调用哪个函数 而与其实质值无关.

子类类型的指针可以通过 子类指针->父类名::函数名() 强制调用父类函数.

子类继承时,重载应在函数后面加上override;前面的virtual可以不加,但最好加上,用于子子类的情况

C++父类和子类同名函数及继承关系---多态相关推荐

  1. java赋值兼容原则,多态问题抛出(赋值兼容性原则遇上父类与子类同名函数的时候)...

    首先通过一个段代码来分析 #include class Parent//定义父类 { public: Parent(int a = 0) { this->a = a; } void print( ...

  2. C++ 继承: 父类与子类构造函数与析构函数的关系

    C++ 继承: 父类与子类构造函数与析构函数的关系 一句话:调用子类构造函数时,父类的先调用,然后调用子类的构造函数.调用子类的析构函数时,先调用子类的析构函数,然后调用父类的析构函数. 例:点类,点 ...

  3. python多重继承 同名函数_python 继承与多重继承

    当然,如果不支持python继承,语言特性就不值得称为"类".派生类定义的语法如下所示: . . . 名称 BaseClassName 必须定义于包含派生类定义的作用域中. 也允许 ...

  4. java根据父类找子类_在java中实现多态时,可以通过父类变量引用子类的对象。_学小易找答案...

    [单选题]对于字符串s="java",下面哪个选项返回字符在字符串中'v'的位置( ). [简答题]汽车核保的主要内容 [判断题]在java中产生子类对象时,直接调用子类的构造方法 ...

  5. C++继承中父类和子类之间的同名覆盖

    文章目录 1 C++继承中父类和子类的同名成员变量 1.1 父类和子类的同名成员变量 2 C++继承中父类和子类的同名成员函数 2.1 父类和子类中的同名成员函数 1 C++继承中父类和子类的同名成员 ...

  6. 使用函数指针实现父类函数调用子类函数的两种方式

    父子类关系 对于继承关系中的父类和子类,我们可以说子类是父类的一种,子类继承了父类的属性和行为.因此,子类可以访问父类的所有非私有成员.相反,父类一般情况下是不能访问子类成员的.然而,我们可以通过一些 ...

  7. 继承中父类、子类构造器中的super. 和super()运用

    1)第一种用法:super 关键字是父类对象的引用 package com.example;public class Person{ // 父类public String name="李四& ...

  8. Cpp 对象模型探索 / 继承关系下的虚函数手动调用

    一.多态机理 #include <iostream>class Father { public:virtual void Func1(){std::cout << " ...

  9. c++父类调用子类的方法

    方法一:虚函数使用 在c++中,父类和子类虚函数都有对应的虚函数表,如果子类重写了虚函数,就会将新写的这个函数的地址放到他自己的表内,并且通过父类的指针指向子类所开辟的空间,这样就可以调用子类的方法 ...

  10. 基类、派生类的同名函数

    直接给出结论,便于以后查阅: 1.多个普通函数,同名时会重载 2.同一个类中的成员函数,同名时会重载 3.子类与父类的函数同名时,子类会覆盖掉父类所有的同名函数,如下例,子类的一个func_0( ), ...

最新文章

  1. 关于ospf区域认证以及虚链路之间的配置问题
  2. .Net 3.5新特性(1)Automatic Properties, Object Initializers, and Collection Initializers
  3. Python: ljust()|rjust()|center()字符串对齐
  4. 让皮肤美白细致的七大DIY - 生活至上,美容至尚!
  5. 1.7_heap_sort_堆的向下调整堆排序
  6. 汇编语言程序设计实验三
  7. 百度地图api的实现
  8. 五、03【Java IO模型】之字节流
  9. 【2018年11月12日】其他化学制品行业的股票估值
  10. C语言五子棋的项目背景,五子棋项目源码!
  11. 2022 ICPC Gran Premio de Mexico Repechaje 题解
  12. oracle insert汉字出错,oracle insert中文后,select是乱码
  13. 16系列显卡支持的计算机系统,GTX16系列显卡登场
  14. Java代码实现点赞功能
  15. 线上云展厅产品展区摆设技巧
  16. 堆外内存的介绍及释放
  17. 锚定物决定成败?四国央行数字货币对比
  18. 应急响应 | Windows事件ID及解释大全
  19. 申请专利的那些事——如何用电子客户端自己申请发明专利
  20. 速学堂Java300集第五章作业

热门文章

  1. 剖析 |数据现代化-富国银行的数据转型之路
  2. Julia: save 与 @save
  3. Kubernetes迁移指北 | 凌云时刻
  4. 【情感识别】基于matlab GUI SVM语音情感识别(带面板)【含Matlab源码 876期】
  5. 毕设题目:Matlab元胞自动机生命游戏
  6. 【土壤分类】基于matlab GUI多类SVM土壤分类【含Matlab源码 1398期】
  7. 四菱天线怎么加强_白话天线(2)---什么是天线?
  8. Pareidolia — AI的艺术教学
  9. pgm图像缩小C语言,C++将二进制(P5)图像转换为ascii(P2)图像(.pgm)
  10. 计算机系统结构自考知识点总结,自考《计算机系统结构》问答题总结(3)