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++的继承的更多相关文章

  1. C++语言笔记系列之十六——赋值兼容规则&amp;多继承的二义性

    1.赋值兼容规则 (1)派生类对象能够给基类对象赋值,这样的情况下派生类对象将从基类继承的成员的值赋值给一个基类对象:可是不同意将一个基类的对象赋值给一个派生类. (2)能够将派生类对象的地址赋给基类 ...

  2. C++语言笔记系列之十八——虚函数(1)

    1.C++中的多态 (1)多态性:同一个函数的调用能够进行不同的操作,函数重载是实现多态的一种手段. (2)联编:在编译阶段进行联接.即是在编译阶段将一个函数的调用点和函数的定义点联接起来. A.静态 ...

  3. C++语言笔记系列之十——静态成员

    1.静态成员 (1)由keywordstatic修饰 静态变量定义语句在编译阶段就运行,运行过程中不再运行. (2)分类:静态数据成员.静态成员函数. (3)静态成员时类的全部对象共享的成员,而不是某 ...

  4. hbase源码系列(十二)Get、Scan在服务端是如何处理

    hbase源码系列(十二)Get.Scan在服务端是如何处理?   继上一篇讲了Put和Delete之后,这一篇我们讲Get和Scan, 因为我发现这两个操作几乎是一样的过程,就像之前的Put和Del ...

  5. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. webpack4 系列教程(十二):处理第三方JavaScript库

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十二):处理第三方 JavaScript 库>原文地址.或者来我的小站看更多内容:godbm ...

  7. OSGi 系列(十二)之 Http Service

    OSGi 系列(十二)之 Http Service 1. 原始的 HttpService (1) 新建 web-osgi 工程,目录结构如下: (2) HomeServlet package com. ...

  8. Java 设计模式系列(十二)策略模式(Strategy)

    Java 设计模式系列(十二)策略模式(Strategy) 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以 ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及 ...

随机推荐

  1. 谷歌上不去,长期的解决方案。在稳定高速Google和Gmail

    对稳定Google神器 国内Google很不稳定,缓慢并经常上不去,由"我想去Google",安全和稳定的使用Google.Gmail.Google+所以通常需要特殊的手段岗位胜任 ...

  2. Mac下一个svn提交.a文件

    Mac在版本控制工具Versions非常方便.一些库有.a文件必须提交svn,commit它发现被忽略的,不能提交没有这个文件.然后通过设置.VEIW->SHOW IGNORED ITEMS选, ...

  3. [Django1.6]south于django1.6使用

    south在django1.6中的使用 django1.7中已经支持数据合并了,所以仅仅能在django1.4 1.5 1.6的版本号中使用south. south的主要作用就是做数据的合并,当我们在 ...

  4. 姿势体系结构的详细解释 -- C

    我基本上总结出以下4部分: 1.问题的足迹大小. 2.字节对齐问题. 3.特别保留位0. 4.这种结构被存储在存储器中的位置. #include <stdio.h> #include &l ...

  5. Java String 类的 equals 和 ==

    public class Test_String { public static void main(String[] args) { String a = new String("aa&q ...

  6. 重写TextBox实现显示提示信息

    /// <summary> /// TextBox提示信息 /// </summary> /// <author>Tim_et</author> /// ...

  7. InputMonitor注意事项

    文章只记录自己的点点理解.为了你自己的参考. 1.mInputFocus WMS.addWindow()-->WMS.finishUpdateFocusedWindowAfterAssignLa ...

  8. Java - 面向对象(object oriented)计划 详细解释

    面向对象(object oriented)计划 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24058107 程序包括 ...

  9. UVA 11464 Even Parity(递归枚举)

    11464 - Even Parity Time limit: 3.000 seconds We have a grid of size N x N. Each cell of the grid in ...

  10. Swing 显示良好JPanel保存为图片

    在JFrame例如,下面的代码被添加 //自己的JPanel DrawPanel drawPanel = new DrawPanel(list, width, height, start, end); ...