C++学习——继承

文章目录

    • 1.C++中类成员的访问权限和继承权限问题
    • 2.多继承的优缺点
    • 3. 继承机制中对象之间如何转换
    • 4.组合与继承优缺点

1.C++中类成员的访问权限和继承权限问题

  1. 三种访问权限
public:用该关键字修饰的成员表示公有成员,
该成员不仅可以在类内可以被访问,在类外也是可以被访问的,是类对外提供的可访问接口;private:用该关键字修饰的成员表示私有成员,
该成员仅在类内可以被访问,在类体外是隐藏状态;protected:用该关键字修饰的成员表示保护成员,
保护成员在类体外同样是隐藏状态,但是对于该类的派生类来说,相当于公有成员,在派生类中可以被访问。
  1. 三种继承方式
若继承方式是public,基类成员在派生类中的访问权限保持不变,
也就是说,基类中的成员访问权限,在派生类中仍然保持原来的访问权限;若继承方式是private,基类所有成员在派生类中的访问权限都会变为私有(private)权限;若继承方式是protected,基类的共有成员和保护成员在派生类中的访问权限都会变为保护(protected)权限,
私有成员在派生类中的访问权限仍然是私有(private)权限。

2.多继承的优缺点

  1. C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承。

  2. 多重继承的优点很明显,就是对象可以调用多个基类中的接口;

  3. 如果派生类所继承的多个基类有相同的基类,而派生类对象需要调用这个祖先类的接口方法,就会容易出现二义性

  4. 加上全局符确定调用哪一份拷贝。比如pa.Author::eat()调用属于Author的拷贝。

  5. 使用虚拟继承,使得多重继承类Programmer_Author只拥有Person类的一份拷贝。

3. 继承机制中对象之间如何转换

  1. 向上类型转换

    将派生类指针或引用转换为基类的指针或引用被称为向上类型转换,向上类型转换会自动进行,而且向上类型转换是安全的。

  2. 向下类型转换

    将基类指针或引用转换为派生类指针或引用被称为向下类型转换,向下类型转换不会自动进行,因为一个基类对应几个派生类,所以向下类型转换时不知道对应哪个派生类,所以在向下类型转换时必须加动态类型识别技术。RTTI技术,用dynamic_cast进行向下类型转换。

4.组合与继承优缺点

  1. 继承

继承是Is a 的关系,比如说Student继承Person,则说明Student is a Person。继承的优点是子类可以重写父类的方法来方便地实现对父类的扩展。

继承的缺点有以下几点:
①:父类的内部细节对子类是可见的。
②:子类从父类继承的方法在编译时就确定下来了,所以无法在运行期间改变从父类继承的方法的行为。
③:如果对父类的方法做了修改的话(比如增加了一个参数),则子类的方法必须做出相应的修改。所以说子类与父类是一种高耦合,违背了面向对象思想。

  1. 组合

组合也就是设计类的时候把要组合的类的对象加入到该类中作为自己的成员变量。

组合的优点:
①:当前对象只能通过所包含的那个对象去调用其方法,所以所包含的对象的内部细节对当前对象时不可见的。
②:当前对象与包含的对象是一个低耦合关系,如果修改包含对象的类中代码不需要修改当前对象类的代码。
③:当前对象可以在运行时动态的绑定所包含的对象。可以通过set方法给所包含对象赋值。

组合的缺点:①:容易产生过多的对象。②:为了能组合多个对象,必须仔细对接口进行定义。

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

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

相关文章

00004-括号匹配问题-牛客网-要考虑各种情况

括号匹配问题 链接:https://ac.nowcoder.com/acm/contest/3530/E 来源:牛客网 众所周知,佳爷是集训队最强,他经常喜欢鄙视集训队最菜的PC,这天他又来了,他丢给PC一道题目: 给你一个字符串&am…

2021年诺贝尔经济学奖评述:解决重大社会问题的自然实验因果框架

来源:集智俱乐部作者:诺奖委员会译者:邓宇昊 编辑:邓一雪 导语许多重大社会问题都涉及到因果分析。比如,接受更长时间的教育是否会让你未来的收入增加?提高最低工资对一个地方的就业会产生怎样的影响&…

C++学习——拷贝构造函数和移动构造函数

文章目录1.拷贝构造函数2.移动构造函数1.拷贝构造函数 拷贝构造函数,它是一种特殊的构造函数。它的作用就是用一个已经生成的对象来初始化另一个同类的对象。 当类中拥有指针类型的成员变量时,拷贝构造函数中需要以深拷贝(而非浅拷贝&#xf…

spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service.impl;import com.itheima.service.IAccountService;import java.util.Arrays; import java.util.List; import java.util.Pr…

溯因推理:人工智能的盲点

来源:AI前线作者:Ben Dickson译者:Sambodhi策划:凌敏本文给当今人工智能界推崇深度学习的现象泼了冷水,指出了人工智能的盲点:溯因推理,并提醒人们不要忽视深度学习的种种问题,否则将…

Python Django项目部署 Linux 服务器

项目依赖: Linux Centos7 (阿里云轻量级服务器) Python 3.7.2 Django 2.2.1 restframework 3.9.4 mysql 5.7 1 安装 python3 到 Centos7, 先安装软件管理包和可能使用的依赖 yum -y groupinstall "Development tools" yum install openssl-devel bzip…

C++学习——C++中的四种类型转换

文章目录1.dynamic_cast2.const_cast3.3 static_cast3.4 reinterpret_cast1.dynamic_cast 用于动态类型转换。只能用于含有虚函数的类,用于类层次间的向上和向下转化。只能转指针或引用。向下转化时,如果是非法的对于指针返回NULL,对于引用抛…

终于,LoRaWAN成全球物联网标准!LoRa将拿下LPWAN领域50%市场?

来源:LoRa联盟官网等整理发布:物联网智库 不久之前,支持物联网低功耗广域网(LPWAN)LoRaWAN开放标准的LoRa联盟宣布,致力于“物联网和智慧城市及社区标准化”的国际电联电信标准化部门(ITU-T&…

spring学习笔记02-spring-bean创建的细节问题

spring学习笔记02-spring-bean创建的细节问题 三种创建Bean对象的方式Bean的作用范围Bean的生命周期 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www…

算法(二叉树-矩阵-堆排序)

最小和 位运算知识点 12>>1 //6 a/2 等价为 a>>1 中间数 (LR)/2 会出现溢出(溢出的意思就是超过了二进制) L(R-L)/2 最终改成 l((r-l)>>1) const smallSum arr > {if (arr null || arr.length < 2) {return 0;}return mergeSort(arr, 0, arr.length …

Nature:盐粒大小的相机,可以拍出清晰彩色照片,未来或可应用到手机

来源&#xff1a;大数据文摘你能想象上图只有盐粒大小的物体是一款相机吗&#xff1f;事实上&#xff0c;这款微型相机甚至可以拍出清晰的全彩图像&#xff0c;而相比之下&#xff0c;普通相机的尺寸要大50万倍。我们可以来看看它的成片。这款微型相机是普林斯顿大学和华盛顿大…

C++学习——C++中的四个智能指针

C里面的四个智能指针:auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c11支持&#xff0c;并且第一个已经被11弃用。为什么要使用智能指针&#xff1a;智能指针的作用是管理一个指针&#xff0c;因为存在以下这种情况&#xff1a; 申请的空间在函数结束时忘记释放&am…

spring学习笔记01-BeanFactory和ApplicationContext的区别

spring学习笔记01-BeanFactory和ApplicationContext的区别 BeanFactory 和 ApplicationContext 的区别 BeanFactory 才是 Spring 容器中的顶层接口。 ApplicationContext 是它的子接口。           BeanFactory 和 ApplicationContext 的区别&#xff1a; 创建对象的…

java微博爬虫

微博爬取要做到每日百万级的数据量&#xff0c;需要解决很多问题。 1.springboot自带Scheduled注解是一个轻量级的quartz&#xff0c;可以完成定时任务。只需要在运行方法上加一个Scheduled注解即可。 该注解有许多属性值 initiaDelay 从程序开始延长一定时间后首次执行。 fixe…

C++学习——set与map

1.set的使用 set的各成员函数列表如下:1. begin()--返回指向第一个元素的迭代器2. clear()--清除所有元素3. count()--返回某个值元素的个数4. empty()--如果集合为空&#xff0c;返回true5. end()--返回指向最后一个元素的迭代器6. equal_range()--返回集合中与给定值相等的上…

2100年彻底颠覆世界的“十大未来科技”

来源&#xff1a;于硅谷智库 科学家们对2100年前的人类生活进行了十大预测&#xff0c;如果这些预测能够变成现实的话&#xff0c;将会让世界发生翻天覆地的变化。1能上网的隐形眼镜出现时间&#xff1a;2030年前预测者&#xff1a;来自华盛顿大学西雅图分校的巴巴克A帕尔维兹教…

spring学习笔记04-IOC常用注解(一)

文章目录2.3常用注解2.3.1 用于创建对象的2.3.1.1 Component2.3.1.2 Controller Service Repository2.3.2 用于注入数据的2.3.2.1 Autowired2.3.2.2 Qualifier2.3.2.3 Resource2.3.2.4 Value2.3.3 用于改变作用范围的&#xff1a;2.3.3.1 Scope2.3.4 和生命周期相关的&#xff…

TCP三次握手和四次挥手通俗理解

一、TCP报文格式 在了解三次握手和四次挥手之前&#xff0c;先知道TCP报文内部包含了哪些东西。 1 TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。TCP在发送数据前必须在彼此间建立连接&#xff0c;这里连接意思是&#xff1a;双方需要内保…

智能如何产生,这仍然是个问题

来源&#xff1a;孙学军科学网博客链接地址&#xff1a;https://blog.sciencenet.cn/blog-41174-1316772.html本文的智能只是生物系统工作原理层面&#xff0c;而不是意识层面的&#xff0c;无论是工作原理&#xff0c;还是大脑意识层面&#xff0c;今天的科学仍然没有给出理想…

spring学习笔记05-IOC常用注解(二)

文章目录2.3 关于 Spring 注解和 XML 的选择问题2.4spring 管理对象细节2.5spring 的纯注解配置2.5.1 待改造的问题2.5.2 新注解说明2.5.2.1 Configuration2.5.2.2 ComponentScan2.5.2.3 Bean2.5.2.4 PropertySource2.5.2.5 Import2.5.2.6 通过注解获取容器&#xff1a;2.3 关于…