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设计模式 - 基础 - 封装 & 继承 & 多态
面向对象的核心是对象,世间万物都可以看作对象,任何一个对象都可以通过一系列属性和行为来描述,可以包含任意数量和类型的数据或操作.类是用来描述具有相同属性和方法的所有对象的集合.类通常是抽象化的概念,而 ...
随机推荐
- Swing 是线程安全的?
不是,Swing 不是线程安全的.你不能通过任何线程来更新 Swing 组件,如 JTable.JList 或 JPanel,事实上,它们只能通过 GUI 或 AWT 线程来更新. 这就是为什么 Sw ...
- (stm32f103学习总结)—DS18B20
一. DS18B20简介 DS18B20数字温度传感器接线方便,封装后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式.主要根据应用场合的不同而改变其外观.封装后的DS18B20可用于电缆 ...
- Web缓存总结
web缓存作用 减少网络带宽消耗降低服务器压力减少网络延迟,加快页面打开速度 Web缓存的类型 数据库数据缓存:为了提供查询的性能,会将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存直接返 ...
- python根据日期判断星期几(超简洁)
代码: from datetime import datetime def getWeek(week): print(date + "是星期" + str(week + 1)) d ...
- Java/C++实现观察者模式--股票价格
当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场. 类图: Java代码: public class Investor implemen ...
- android的布局xml文件如何添加注释?
xml布局文件如图添加注释后报错,错误内容如下: 上网查阅xml添加注释的语法规则: XML 中的注释 在 XML 中编写注释的语法与 HTML 的语法很相似: <!--This is a co ...
- vux+vue-cli3.0坑
最近开发了项目使用了vue-cli3.0+vux搭建的项目,现在总结遇到的问题: 环境:github vux有关于vue-cli3.0以及vux已经搭建好的脚手架vux-cli3链接 一:如下报错 解 ...
- 【Python】Windows微信清理工具v.3.0.2
Windows微信清理工具v.3.0.2 更新内容: 1.清理完成时可显示删除了哪些文件. 软件截图: 所有版本及源码下载链接: 百度网盘:https://pan.baidu.com/s/1OSIpv ...
- Java报错: A component required a bean of type 'com.sirifeng.testmybatis.mapper.BookMapper' that could not be found.
在学习Spring-boot-mybatis时,报错A component required a bean of type 'com.sirifeng.testmybatis.mapper.BookM ...
- python---实现单例模式
""" 单例模式 单利模式是一种设计模式, 应用该模式的类只会生成一个实例, 可以保证在程序的不同位置 都可以且仅可以取到同一个对象实例. 如果实例不存在, 会创建一个实 ...