C++支持单继承和多继承,并提供3类继承:public、private及protected。在public继承中,每个派生类对象都是基类对象,反之基类对象却不是派生类对象。派生类成员无法直接访问基本的private成员,只能通过继承的public成员访问,但private基类成员仍然得到了继承(被视为派生类的一部分)。友元函数是不被继承的。

  基类的protected成员可以由基类所派生的类和友元访问。

#include” Employee.h”
class Manage : public Employee
{…..}; Manage ::Manage(const string& name, const string& ssn, double rate)
: Employee(name, ssn) //调用基类构造函数初始化
{……}

  派生类构造函数使用成员初始化器将参数传递给基类的构造函数。C++要求派生类构造函数调用其基类的构造函数来初始化继承到派生类的基类的数据成员。若不显式调用,C++将尝试调用基类的默认构造函数,当基类不提供默认构造函数时,将产生编译错误。

  把基类数据成员声明为protected将节省调用函数设置继承的数据成员的开销。但将产生2个问题:安全性降低;派生类的成员函数的实现可能太依赖基类的实现,当基类中protected数据成员修改时,所有派生类中直接使用此数据成员的地方全部要改。如果可能的话,应尽量避免在基类中包含protected数据成员。

  重定义基类中的成员函数后,可以使用基类::成员函数名调用基类的成员函数(否则有可能造成对自身的无限递归调用)。

  派生类的对象被创建时,先调用并执行基类的构造函数,然后执行派生类的构造函数。派生类对象析构函数调用顺序,与相应的构造函数的调用顺序正好相反。派生类不会继承基类的构造函数、析构函数和重载的赋值运算符,但派生类的构造函数、析构函数和重载的赋值运算符可以调用基类的构造函数、析构函数和重载的赋值运算符。

C++_继承的更多相关文章

  1. 自学Python5.5-面向对象三大基本特征_继承

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  2. Python学习笔记008_类_对象_继承_组合_类相关的BIF

    # 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...

  3. C# 一些知识点总结(一)_继承,多态,集合,关键字...

    内存中的三大存储区域:栈.堆.静态存储区域 new 关键字:new帮助我们做了三件事:1)在内存中开辟一块空间(开辟内存空间)2) 在开辟的空间中创建对象3)调用对象的构造函数进行初始化对象所以构造函 ...

  4. 02_线程的创建和启动_继承Thread方式

    [简述] java使用Thread类代表线程,所有的线程都必须是Thread或者其子类的实例. 每个线程的任务就是完成一定的任务,实际上就是执行一段程序流. [创建并启动多线程的步骤(集成Thread ...

  5. No2_2.接口继承多态_Java学习笔记_继承

    ***类的继承***1.继承的实现extends2.[修饰符] class 子类名 extends 父类名{}3.修饰符一般为:public abstract final4.重写是指父子类之间的关系, ...

  6. 04737_C++程序设计_第6章_继承和派生

    例6.1 使用默认内联函数实现单一继承. #include<iostream> using namespace std; class Point { private: int x, y; ...

  7. C++_基础_继承、多态

    内容: (1)子类中的拷贝构造和拷贝赋值 (2)多继承和虚继承 (3)多态的初识 (4)虚析构的特性和使用 (5)多态的底层实现 (6)纯虚函数.抽象类的概念 1.子类中的拷贝构造和拷贝赋值 子类中的 ...

  8. Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库

    装饰器其实也是一个函数,它的参数是一个函数 ; 其它函数与装饰器之间建立联系是通过 @装饰器函数名, 感觉有点像Spring的面向切面编程 装饰器函数,如何处理原函数的参数.?  装饰器 原函数返回值 ...

  9. 【Java基础】【08面向对象_继承&方法&final】

    08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以 ...

  10. JAVA基础复习与总结<一> 对象与类的概念_内部类_继承与多态

    一.对象与类 类:类是一个模版,它描述了一类对象的行为和状态. class animal { private int color; private int size; public void eat ...

随机推荐

  1. JavaScript计时

    JavaScript计时分两种 setTimeout:程序在隔几秒后执行 语法: setTimeout(function(){要执行的程序},xxxx) setInterval:程序每隔几秒执行 语法 ...

  2. Spring MVC介绍和第一个例子

    1.Spring mvc概述 spring mvc是spring提供给web应用框架设计,实际上MVC框架是一个设计理念.它不仅存在java世界中而且广泛在于各类语言和开发中,包括web的前端应用.对 ...

  3. 剑指offer——数据结构

    技术面重点:数组.字符串.链表.树.栈以及队列.

  4. 读Pyqt4教程,带你入门Pyqt4 _006

    窗口组件是应用程序的基本构建块.PyQt4编程工具包拥有范围广泛的各种窗口组件.按钮.选择框.滑块.列表框等等,程序员工作所需要的一切.在教程的这部分中,我们将介绍一些有用的窗口组件. QCheckB ...

  5. [JavaWeb基础] 007.Struts2的配置和简单使用

    1.框架简介 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架,用于快速开发Java Web应用.Struts实现的重点在C(Controller), ...

  6. Shell概述1

    Shell概述1 脚本文件内容(vim ex2) #!/bin/bash #If no arguments,then listing the current directory. #Otherwise ...

  7. Java并发编程 (六) 线程安全策略

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.不可变对象-1 有一种安全的发布对象,即不可变对象. 1.不可变对象需要满足的条件 ① 对象创建以后 ...

  8. Java实现 LeetCode 643 子数组最大平均数 I(滑动窗口)

    643. 子数组最大平均数 I 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. 示例 1: 输入: [1,12,-5,-6,50,3], k = 4 输出: 12.7 ...

  9. Java实现 LeetCode 318 最大单词长度乘积

    318. 最大单词长度乘积 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母.你可以认为每个单词只包含小 ...

  10. Java实现 蓝桥杯VIP 算法提高 产生数

    算法提高 产生数 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规则 ...