C++语言笔记系列之十二——C++的继承
C++的继承
1.继承方式
public(公有继承)
派生类中的成员能够訪问基类的public成员和protected成员,但不能訪问基类的private成员。
派生类的对象仅仅能訪问基类的public成员。
protected(保护继承),private(私有继承)
派生类中的成员能够訪问基类的public成员和protected成员,但不能訪问基类的private成员。
派生类的对象不能訪问基类的不论什么成员。
2.样例
example 1:
#include <iostream.h>
class A
{
public:
void fun1(int a) {cout<<a<<endl;}
void fun2(int b) {cout<<b<<endl;}
};
class B:public A
{
public:
void fun3() {cout<<"It is in class B."<<endl;}
};
int main()
{
B b;
A a;
b.fun3(); //Y(正确)
b.fun2(); //Y
b.fun1(); //Y
a.fun3(); //N(错误)
a.fun2(); //Y
a.fun1(); //Y
}
example2:
#include <iostream.h>
class A
{
public:
void f1();
A() {i1 = 10; j1 = 11;}
protected:
int j1;
private:
int i1;
};
class B:public A
{
public:
void f2();
B() {i2 = 20; j2 = 21;}
protected:
int j2;
private:
int i2;
};
class C:public B
{
public:
void f3();
C() {i3 = 30; j3 = 31;}
protected:
int j3;
private:
int i3;
};
下面说法:
(1)派生类B中的成员f2()能够訪问类A中的成员f1()(Y)、i1(N)、j1(Y)。
(2)派生类对象B可以訪问类A的成员f1()(Y)、i1(N)、j1(N)。
(3)派生类C中的成员函数f3()是否能訪问直接基类B中的成员f2()(Y)、i2(N)、j2(Y);是否能訪问间接基类A中的f1()(Y)、i1(N)、j1(Y)。
(4)派生类对象C可否訪问f2()(Y)、i2(N)、j2(N);可否訪问i1(N)、f1()(Y)、j1(N)。
注:类能够直接訪问类中的private、protected以及public成员;类的对象仅仅能够直接訪问类中的public。
C++语言笔记系列之十二——C++的继承的更多相关文章
- C++语言笔记系列之十六——赋值兼容规则&多继承的二义性
1.赋值兼容规则 (1)派生类对象能够给基类对象赋值,这样的情况下派生类对象将从基类继承的成员的值赋值给一个基类对象:可是不同意将一个基类的对象赋值给一个派生类. (2)能够将派生类对象的地址赋给基类 ...
- C++语言笔记系列之十八——虚函数(1)
1.C++中的多态 (1)多态性:同一个函数的调用能够进行不同的操作,函数重载是实现多态的一种手段. (2)联编:在编译阶段进行联接.即是在编译阶段将一个函数的调用点和函数的定义点联接起来. A.静态 ...
- C++语言笔记系列之十——静态成员
1.静态成员 (1)由keywordstatic修饰 静态变量定义语句在编译阶段就运行,运行过程中不再运行. (2)分类:静态数据成员.静态成员函数. (3)静态成员时类的全部对象共享的成员,而不是某 ...
- hbase源码系列(十二)Get、Scan在服务端是如何处理
hbase源码系列(十二)Get.Scan在服务端是如何处理? 继上一篇讲了Put和Delete之后,这一篇我们讲Get和Scan, 因为我发现这两个操作几乎是一样的过程,就像之前的Put和Del ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- webpack4 系列教程(十二):处理第三方JavaScript库
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十二):处理第三方 JavaScript 库>原文地址.或者来我的小站看更多内容:godbm ...
- OSGi 系列(十二)之 Http Service
OSGi 系列(十二)之 Http Service 1. 原始的 HttpService (1) 新建 web-osgi 工程,目录结构如下: (2) HomeServlet package com. ...
- Java 设计模式系列(十二)策略模式(Strategy)
Java 设计模式系列(十二)策略模式(Strategy) 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS)
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及 ...
随机推荐
- Nginx搭建反向代理服务器过程详解(转)
一.反向代理 我们都知道,80端口是web服务的默认端口,其他主机访问web服务器也是默认和80端口进行web交互,而一台服务器也只有一个80端口,这是约定俗成的标准. 我们来看下面两个场景: 1.服 ...
- Eclipse build launcher 3具体步骤
1. 下载launcher 3源代码 (需要FQ) git clone https://android.googlesource.com/platform/packages/apps/Launche ...
- matlab 图片批量读取
1. 指定的路径 单目录data所有图片 file_path = '.\data\';% 图片目录路径 img_path_list = dir(strcat(file_path,'*.jpg'));% ...
- 网络广告公司的恐慌 XSS广告终结者(html5新特性)
人们在平时网络冲浪的时候,有时候会发现当前网站有很多莫名其妙的广告,这些广告会被导向到站外. 这些广告可能是你安装了一些免费网络软件后强制安装的浏览器插件导致的. 譬如chrome浏览器:
- 1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String
1.错误描写叙述 此行的多个标记: -workId -1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String. 2.错误原 ...
- 理解git经常使用命令原理
git不同于类似SVN这样的版本号管理系统,尽管熟悉经常使用的操作就能够满足大部分需求,但为了在遇到麻烦时不至于靠蛮力去尝试,了解git的原理还是非常有必要. 文件 通过git管理的文件版本号信息所有 ...
- 这个夏天不AC(杭州电2037)
这个夏天不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 获得span里面价值(在特殊情况下 )
如何获得A? <div class="warpper"> <span class="content"> A <span>12 ...
- 初识 Cloudera Impala
Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据.已有的Hive系统尽管也提供了SQL语义,但因为Hive底层 ...
- 2014ACM/ICPC亚洲区域赛牡丹江站汇总
球队内线我也总水平,这所学校得到了前所未有的8地方,因为只有两个少年队.因此,我们13并且可以被分配到的地方,因为13和非常大的数目.据领队谁oj在之上a谁去让更多的冠军.我和tyh,sxk,doub ...