一、继承中类的类型转换规则

  • 我们普通的编程规则规定,如果我们想把引用或指针绑定到一个对象上,则引用或指针的类型必须与所绑定的对象的类型一致或者对象的类型含有一种可接受的const类型转换规则。但是继承关系中的类比较例外,其规则如下:

  • ①我们可以将基类的指针或引用绑定到派生对象上

#include <iostream>
class A {};
class B:public A{};
int main()
{A *a;B b;a = &b;return 0;
}
  • ②即使不是指针/引用类型,我们也可以将派生类转换为基类

#include <iostream>
class A {};
class B:public A{};
int main()
{A a;B b;a = b;return 0;
}
  • ②不能将基类对象绑定到派生类的指针/引用上

A a;
B *b;
b = &a; //程序错误,不能将基类对象转换为派生类对象

二、转换的本质

  • 派生类可以转换为基类的本质是:

    • ①为什么派生类可以转换为基类:派生类从基类而来,因此派生类中包含了基类的方法和成员。此时基类可以通过指针或引用指向派生类(相

C++:43---派生类向基类转换、静态/动态的类变量相关推荐

  1. 从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换

    一.不能自动继承的成员函数 构造函数(包括拷贝构造函数) 析构函数 =运算符 二.继承与构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数. 声明构造函数时,只需要对本类中新增成员进行初 ...

  2. 派生类到基类的转换 和基类到派生类的转换

    一. 基类与派生类的转换     3种继承方式(公用.保护.私有继承)中,公用派生类才是基类真正的子类型,它完整地继承了基类的功能.     不同类型数据之间在一定条件下可以进行类型的转换.基类与派生 ...

  3. 【C++ Priemr | 15】派生类向基类转换的可访问性

    1. 只有当D公有继承B时,用户代码才能使用派生类向基类的转换:如果D私有继承B的方式是受保护的或者私有的,则用户代码不能使用该转换. class A {}: class B : public A { ...

  4. C++学习记录:派生类向基类转换及其可访问性

    知乎有很多博主学不会了一言不合就抄书,我觉得这对学习计算机科学是一样的. 这里说一个自己或许也有许多人都会也不太注意的点,派生类向基类转换及其可访问性,抄自<C++ Primer>. 派生 ...

  5. C++ 类继承:构造函数与析构函数调用顺序,派生类和基类之间的特殊关系,公有继承及其他

    文章目录 一.派生类构造函数与基类构造函数 二.创建与销毁派生类对象时,构造函数和析构函数的调用 三.派生类和基类之间的特殊关系 四.公有继承 (一).何为公有继承 (二).多态公有继承 (三).虚函 ...

  6. 派生类对基类成员的访问控制之公有继承

    公有继承 前面说过,派生类从基类继承时有三个步骤, 第一个步骤是吸收基类成员,吸收了基类中除构造函数和析构函数之外的所有数据成员和函数成员, 第二个步骤就是修改基类成员,包括修改对基类成员的访问属性和 ...

  7. 派生类从基类继承的过程

    派生类从基类继承的过程 派生类从基类继承的过程可以分为三个步骤:吸收基类成员.修改基类成员和添加新成员. 吸收基类成员就是代码复用的过程,修改基类成员和添加新成员实现的是对原有代码的扩展,而代码的复用 ...

  8. 6-4 派生类使用基类的成员函数

    6-4 派生类使用基类的成员函数 分数 5 全屏浏览题目 切换布局 作者 李廷元 单位 中国民用航空飞行学院 按要求完成下面的程序: 1.定义一个Animal类,成员包括: (1)整数类型的私有数据成 ...

  9. 不同派生方式下基类成员在派生类中的可访问范围属性

    不同派生方式下基类成员在派生类中的可访问范围属性 派生方式 派生方式 派生方式 基类成员 公有派生 私有派生 保护派生 私有成员 不可访问 不可访问 不可访问 保护成员 保护 私有 保护 公有成员 公 ...

最新文章

  1. 电脑上怎么做pdf文件_PDF文件怎么加水印?PDF水印添加方法
  2. Agile in a Flash:万物皆渐进(14)
  3. Maven配置tomcat和jetty插件来运行项目
  4. 聚焦BCS|专家共议“内生安全框架”如何护航新基建
  5. node.js 框架基本功能
  6. [Java] 集合类(List、Set、Map的基本使用)
  7. python 自动抢红包_用二十行代码实现微信自动抢红包
  8. (3)redis.config配置文件详解
  9. ASP编程操作Excel(提高版)
  10. vs2015如何安装vsix扩展工具
  11. PS教程证件照底片更换颜色
  12. c++ 中字符串的字符数与字节数
  13. [安卓相机1]简单小Demo
  14. 安装VMware Workstation 16.1
  15. bittorrent端口_如何在Linux防火墙中启用BitTorrent端口?
  16. 面试官:递归是个什么东东?
  17. 老卫带你学---使用cv2.imwrite保存的图像是全黑的
  18. java多线程学习笔记--一.多线程的基础知识
  19. IAR更改更改字体的办法,完美解决!
  20. 2.1 Oracle 服务器

热门文章

  1. ubuntu下安装opensips
  2. python 计算协方差矩阵_opencv2学习:计算协方差矩阵
  3. 由于在客户端检测到一个协议错误_TLS协议的分析
  4. 利用anaconda prompt打开jupyter notebook
  5. 【转】ADFS 概念与基本开发介绍
  6. 【转】ABP源码分析十二:本地化
  7. 【转】Azure 命令行工具大混战,都是什么,该选哪个?
  8. SharePoint学习札记[3] — Office SharePoint Server 2007部署
  9. Axure教程 axure新手入门基础(2) 简单易上手
  10. java中处理打折率_【JAVA300例】13、输入价格判断折扣,switch用法+int留整数方便判断...