C++基础-6-继承
6. 继承
1 #include<iostream>
2 using namespace std;
3
4
5 class Base {
6 public:
7 Base() {
8 m_A = 10;
9 }
10 int m_A;
11
12 };
13
14 class Son: public Base {
15 public:
16 Son() {
17 m_A = 20;
18 }
19 int m_A;
20 };
21
22 // 对于静态成员
23 class Base1 {
24 public:
25
26 static int m_A;
27
28 };
29
30 int Base1::m_A = 10;
31
32 class Son1 : public Base1 {
33 public:
34
35 static int m_A;
36 };
37 int Son1::m_A = 20;
38
39 void test01() {
40 // 1.通过对象访问
41 Base b1;
42 Son s1;
43 cout << "通过对象访问" << endl;
44 cout << "Base ---> m_A:" << b1.m_A << endl;
45 cout << "Son ---> m_A:" << s1.Son::m_A << endl;
46
47
48 // 2.通过类名访问(对于静态成员)
49 cout << "通过类名访问" << endl;
50 cout << "Base1 ---> m_A:" << Base1::m_A << endl;
51 cout << "Son1 ---> m_A:" << Son1::Base1::m_A << endl;
52 }
53
54 int main() {
55
56 test01();
57
58 system("pause");
59
60 return 0;
61 }
62
63 // 总结(继承)
64 // 继承---目的是减少重复代码,提高代码的复用率
65 //
66 // 继承语法:class 子类: 继承方式 父类
67 // 继承方式:公共继承(public),保护继承(protected),私有继承(private)
68 //
69 // 父类中所有的非静态成员属性都会被子类继承下去
70 // 父类中私有成员属性 是被编译器隐藏了,因此访问不到,但是会被继承下去
71 //
72 // cl /d1 reportSingleClassLayout(xxx类名) xxx.cpp
73 // 第一个是L,第二个是123的1,报告单各类的布局
74 //
75 // 继承中构造和析构的顺序:
76 // 先构造 父类,再构造 子类; 析构顺序与构造顺序相反;
77 //
78 // 继承同名成员(变量/函数)的处理方式:
79 // 当子类与父类出现同名成员,
80 // 访问子类同名成员 直接访问即可 s.m_A
81 // 访问父类同名成员 需要加作用域 s.Base::m_A
82 //
83 // 此外,对于静态成员,处理方式与非静态成员相同
84 //
85 // 菱形继承
86 // 两个派生类继承同一个基类
87 // 又有某个类同时继承两个派生类
88 // 这样的继承成为菱形继承,或者钻石继承
89 //
90 // 存在问题:
91 // 产生二义性(加作用域解决)
92 // 重复继承,只需要一份继承即可
93 // 利用虚继承解决,关键字virtual
94 //
参考:《黑马程序员》C++教程
C++基础-6-继承的更多相关文章
- 二十二. Python基础(22)--继承
二十二. Python基础(22)--继承 ● 知识框架 ● 继承关系中self的指向 当一个对象调用一个方法时,这个方法的self形参会指向这个对象 class A: def get(s ...
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- 三、Java基础---------关于继承、构造函数、静态代码块执行顺序示例讲解
在上节博客中曾提到过类的继承,这篇文章主要是介绍类的继承.构造函数以及静态代码块的执行顺序. 首先接着分析在黑马基础测试中的一个关于继承的题目,题目描述如下: 声明类Person,包含2个成员变量:n ...
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...
- 【Java基础】继承的一些总结
什么是继承 把一些类的具有共性的东西剥离出来形成一个新的类,然后各个其他类保留自己独有的特性,并用关键字extends继承这个剥离出来的新的类,可以最终达到各类原始相同效果,但是在每个类中,单用一个“ ...
- Java基础08 继承
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 继承(inheritance)是面向对象的重要概念.继承是除组合(composit ...
- C++基础——类继承中方法重载
一.前言 在上一篇C++基础博文中讨论了C++最基本的代码重用特性——类继承,派生类可以在继承基类元素的同时,添加新的成员和方法.但是没有考虑一种情况:派生类继承下来的方法的实现细节并不一定适合派生类 ...
- Python基础之继承与派生
一.什么是继承: 继承是一种创建新的类的方式,新建的类可以继承一个或过个父类,原始类成为基类或超类,新建的类则称为派生类 或子类. 其中,继承又分为:单继承和多继承. class parent_cla ...
- Python设计模式 - 基础 - 封装 & 继承 & 多态
面向对象的核心是对象,世间万物都可以看作对象,任何一个对象都可以通过一系列属性和行为来描述,可以包含任意数量和类型的数据或操作.类是用来描述具有相同属性和方法的所有对象的集合.类通常是抽象化的概念,而 ...
随机推荐
- 你如何在 Java 中获取线程堆栈?
kill -3 [java pid] 不会在当前终端输出,它会输出到代码执行的或指定的地方去.比如,kill -3 tomcat pid, 输出堆栈到 log 目录下. Jstack [java pi ...
- 什么是 Spring Cloud?
Spring cloud 流应用程序启动器是 于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Task,一个生命周期短暂的微服务框架,用于快 ...
- SpringBoot Jpa 双数据源mysql + oracle + liquibase+参考源码
一.yml文件配置 spring: # 数据库配置 datasource: primary: jdbc-url: jdbc:mysql://localhost:3306/mes-dev?useUnic ...
- 面试问题之C++语言:C与C++的区别
C是C++的基础,C++语言和C语言在很多方面是兼容的. C是结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出或实现过程(事务 ...
- 在 java 中守护线程和本地线程区别?
java 中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(bool on):true 则把该线程 ...
- spring 自动装配 bean 有哪些方式?
Spring容器负责创建应用程序中的bean同时通过ID来协调这些对象之间的关系.作为开发人员,我们需要告诉Spring要创建哪些bean并且如何将其装配到一起. spring中bean装配有两种方式 ...
- 用 Java 实现阻塞队列 ?
参考 java 中的阻塞队列的内容吧,直接实现有点烦
- numpy计算数组中满足条件的个数
Numpy计算数组中满足条件元素个数 需求:有一个非常大的数组比如1亿个数字,求出里面数字小于5000的数字数目 1. 使用numpy的random模块生成1亿个数字 2. 使用Python原生语法实 ...
- python-查找鞍点
[题目描述]对于给定5X5的整数矩阵,设计算法查找出所有的鞍点的信息(包括鞍点的值和行.列坐标,坐标从1开始). 提示:鞍点的特点:列上最小,行上最大. [练习要求]请给出源代码程序和运行测试结果 ...
- Android优化应用启动速度
一.应用的启动 启动方式 通常来说,在安卓中应用的启动方式分为两种:冷启动和热启动. 1.冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动 ...