返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++类型兼容规则详情
  • 286
分享到

C++类型兼容规则详情

2024-04-02 19:04:59 286人浏览 泡泡鱼
摘要

在类的继承过程中,子类继承了父类除去构造函数和析构函数外的所有成员,那么父类的功能子类是不是都有呢? 实际上,子类是否含有父类的全部功能,取决于“继承方式”。

在类的继承过程中,子类继承了父类除去构造函数和析构函数外的所有成员,那么父类的功能子类是不是都有呢?

实际上,子类是否含有父类的全部功能,取决于“继承方式”。在共有(public)继承的情况下,父类的public成员在子类中是public成员,父类的protected成员在子类中是protected成员。也就是说,此时,父类对外暴露的功能,子类都有。

因此,在共有继承时,任何需要父类对象的地方,都能使用子类对象“替代”,这就是类型兼容规则。

其中“替代”包含下面三种情况:

  • 子类对象隐含转换为父类对象;
  • 子类对象用于初始化父类引用;
  • 子类对象地址隐含转换为父类指针;

下面定义的三个函数,分别对应上述三种情况。其中Animal为父类,Duck为子类,Animal和Duck都定义了public类型的eat()函数:

// 子类对象隐含转换为父类对象;
void situationOne(Animal animal) {
    animal.eat();
} 

// 子类对象用于初始化父类引用
void situationTwo(Animal &r) {
    r.eat();
}

// 子类指针隐含转换为父类指针
void situationThree(Animal *p) {
    p->eat();
}

现在,可以使用子类对象作为函数参数传入到上述三个函数中:

Duck duck;

situationOne(duck);
situationTwo(duck);
situationThree(&duck);

注意:三个函数中通过父类调用的eat()函数永远是“父类成员函数eat()”而不是“子类成员函数eat()”。也就是说,通过“类型兼容规则”访问的永远是父类成员,而不是子类成员。

 到此这篇关于c++类型兼容规则详情的文章就介绍到这了,更多相关C++类型兼容内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++类型兼容规则详情

本文链接: https://lsjlt.com/news/142135.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++类型兼容规则详情
    在类的继承过程中,子类继承了父类除去构造函数和析构函数外的所有成员,那么父类的功能子类是不是都有呢? 实际上,子类是否含有父类的全部功能,取决于“继承方式”。...
    99+
    2024-04-02
  • C语言强制类型转换规则实例详解
    目录整形之间的强制转换无符号转有符号有符号转无符号不同长度数字转化中的截断整形与浮点数的强制类型转换总结整形之间的强制转换 在强制类型转换中,我们常用的整形强制转换有无符号和有符号类...
    99+
    2024-04-02
  • C++浮点数类型详情
    目录1、浮点数2、关于m3、关于e4、浮点数的使用5、浮点数类型6、注意事项1、浮点数 浮点数是C++的第二组基本类型,它能够表示带小数部分的数字。不仅如此,浮点数的范围也比int更...
    99+
    2024-04-02
  • TS类型兼容教程示例详解
    目录类型兼容简单类型兼容普通对象兼容函数兼容参数数量不一致参数类型不一致返回不同类型兼容 因为JS语言不慎过于领过, 真实开发场景中往往无法做到严格一致的类型约束,此时TS就不得不做...
    99+
    2024-04-02
  • JavaScript隐式类型转换规则详解
    目录前言数学运算符中的类型转换减、乘、除加逻辑语句中的类型转换单个变量使用 == 比较ToPrimitive前言 在 JavaScript 中,在进行运算操作时,如果两边数据不统一,...
    99+
    2023-05-18
    JavaScript 隐式类型转换 JavaScript 类型转换规则
  • C++ 函数参数类型的转换规则
    c++++ 函数参数类型转换规则包括: 无符号类型转换为有符号类型、精度低的类型转换为精度高的类型、浮点类型之间的转换、兼容的指针类型之间转换。实战案例:可以传递无符号整数、精度低的整数...
    99+
    2024-04-13
    c++ 函数参数类型 隐式类型转换 隐式转换
  • 详解C语言中不同类型的数据转换规则
    不同类型数据间的混合运算与类型转换 1.自动类型转换 在C语言中,自动类型转换遵循以下规则: ①若参与运算量的类型不同,则先转换成同一类型,然后进行运算 ②转换按数据长度增加的方...
    99+
    2024-04-02
  • css规则类型有哪些
    这篇文章主要介绍了css规则类型有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css规则类型有哪些文章都会有所收获,下面我们一起来看看吧。 c...
    99+
    2024-04-02
  • C# 变量,常量数据类型详情
    目录1、变量操作1.1 变量声明、赋值1.2 赋值运算符和赋值表达式1.4变量命名规则2 常量2.1 变量常量作用域2.2 @作用3 数据类型之值类型3.1数据类型3.2 理解内存原...
    99+
    2024-04-02
  • MySQL MDL类型和兼容矩阵
    MySQL的MDL(Metadata Locking)是一种用于管理和控制数据库对象的锁机制。MDL锁定允许同时对同一对象进行读取和...
    99+
    2024-04-09
    MySQL
  • css规则的类型有哪些
    css 规则包括:通用规则:选择所有元素类型选择器:根据元素类型选择元素类选择器:根据元素的 class 属性选择元素id 选择器:根据元素的 id 属性选择元素(唯一)后代选择器:选择...
    99+
    2024-04-25
    css 作用域
  • python中的变量命名规则详情
    目录1.变量命名1)命名的规范性2)编程语言常用驼峰命名法2. 变量命名的描述性3.变量名尽量短,但是不要太短4.合理使用变量5. 变量定义尽量靠近使用6. 合理使用namedtup...
    99+
    2024-04-02
  • C++自定义数据类型方法详情
    目录1、typedef声明2、枚举类型enum1、typedef声明 typedef用于给已有的类型一个新的名字,这个新的名字可以是自己定义的, 其语法为: typedef 现有类型...
    99+
    2024-04-02
  • SQLServer类型text运算符不兼容
    SQLServer 类型 text 运算符不兼容   DB : SQLServer 2012 问题: Text 类型的列,不支持“ = ”运算符。 报错如下:...
    99+
    2024-04-02
  • C++ 函数声明中的类型签名:理解各种类型推导规则
    c++++ 函数声明中的类型签名指定了函数的输入和输出类型,通过理解类型推导规则,可以编写可靠且可维护的代码。规则包括:模板推导:类型参数从函数调用中推导出自动类型推导:类型从初始化器或...
    99+
    2024-05-04
    c++ 函数签名 类型推导
  • python_tkinter事件类型详情
    目录1.事件绑定函数2.事件类型3.事件对象1.事件绑定函数 事件绑定函数有三个如下:        组件.bind('事件类型...
    99+
    2024-04-02
  • TypeScript映射类型详情
    目录1.映射类型(Mapped Types)2.映射修饰符(Mapping Modifiers)3.通过 as 实现键名重新映射(Key Remapping via as)4.深入探...
    99+
    2024-04-02
  • MySQL 数据类型详情
    目录1、数值类型1.1、数值类型分类1.1.1、浮点数1.1.2、位类型1.1.3、时间日期类型1.1.4、字符串类型1.1.5、ENUM 类型1.1.6、SET类型1、数值类型 1...
    99+
    2024-04-02
  • 分享C++三种类型new类型的运算符使用详情
    目录1.new操作符2.::operator new2.1原始调用2.2重载12.3重载23.place new1.new操作符 new operator,平时用的最多的new操作符...
    99+
    2024-04-02
  • C++编译期循环获取变量类型详情
    目录一、问题二、解决方案1.定义类型2.定义属性集3. 获取类型索引4. 编译期循环总结一、问题 假设现在有一些属性以及这些属性对应的数值类型,比如: "gender" -->...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作