代码重用

  c++很重要的一个特征就是代码重用。在c语言中重用代码的方式就是拷贝代码、修改代码。c++可以用继承或组合的方式来重用。通过组合或继承现有的类来创建新类,而不是重新创建他们。

(一)组合

组合就是将一个类作为另一个类的对象成员。功能通过委托来实现

 class A{
public:
void funA(){
...
}
}
class B{
public:
void funB(){
...
a.funA();
...
}
private:
A a;
}

(二)继承

  1、继承时使用已经编写好的类来创建新类,新的类具有原有类的所有属性和操作,也可以在原有累的基础上作一些修改和增补。

2、新类称为派生类或子类,原有类称为基类或父类

3、派生类是基类的具体化,

派生类     范围小      具体

基类      范围大      抽象

(1)派生类声明语法:

  class 派生类名:继承方式  基类名

  {

    派生类新增成员声明;

  }

继承方式包含: public、protected、 private 三种方式

默认继承保护级别

1、class Base{};

2、struct D1:Base{};  //公有继承

3、class D2:Base{}; //私有继承

接口继承与实现继承

继承与重定义

c++ 继承(一)的更多相关文章

  1. javaScript的原型继承与多态性

    1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...

  2. JavaScript的继承实现方式

    1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...

  3. javascript中的继承与深度拷贝

    前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...

  4. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  5. JS继承类相关试题

    题目一: //有关于原型继承的代码如下:function Person(name) {   this.name = name;}Person.prototype = {     getName : f ...

  6. JS继承之寄生类继承

    原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...

  7. JS继承之借用构造函数继承和组合继承

    根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...

  8. JS继承之原型继承

     许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...

  9. 深入浅出JavaScript之原型链&继承

    Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...

  10. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

随机推荐

  1. 解决Maven下载依赖慢的问题(转)

    使用Maven构建项目时,项目中有的依赖包可能下载的非常慢,我们可以通过配置镜像来解决这个问题. 之前开源中国的那个好像已经关闭了,于是我找到了一个阿里的来解决. 在Maven的配置文件(%MAVEN ...

  2. Oracle11g ADG环境实施文档-1204

    Oracle11g adg 环境搭建实施手册-1204 2017年8月30日 9:16 11g adg 环境搭建实施手册-0824 2017年8月24日 10:18 ################# ...

  3. flask-后台布局页面搭建4

    1.  搭建后台页面 5.1管理员登录 步骤:1.在admin视图中导入from flask import render_template,redirect,url_for.并写入一下代码. #登录 ...

  4. [CodeForces - 197C] C - Lexicographically Maximum Subsequence

    C - Lexicographically Maximum Subsequence You've got string s, consisting of only lowercase English ...

  5. Cppcheck - A tool for static C/C++ code analysis

    cppcheck是一个个检测源码的工具,对编译工具的一个补充,mark Cppcheck - A tool for static C/C++ code analysis Syntax: cppchec ...

  6. redis sentinel哨兵模式集群搭建教程

    1.环境说明 我们将使用192.168.220.128.192.168.220.129两台机器搭建sentinel交叉主从为例 当前我们已在192.168.220.128上按redis安装教程安装了r ...

  7. 服务器性能调优(netstat监控大量ESTABLISHED连接与Time_Wait连接问题)

    netstat监控大量ESTABLISHED连接与Time_Wait连接问题 问题描述: 在不考虑系统负载.CPU.内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连 ...

  8. How to import a GitHub project into Eclipse

    Assuming you have created a project in GitHub, these are the steps to import it into Eclipse. First, ...

  9. 加密解密 AES RSA MD5 SHA

    加密解密: 对称加密:加密和解密相同秘钥.常见算法:AES, XTEA, 3DES. 非对称加密: 公钥加密 私钥加密. 加密和解密秘钥不同.常见算法:RSA OpenSSL> genrsa - ...

  10. prefix word se sub suc sup suf sur out~s

    1★ se 区分开,分开 ,离开   2★ sub 接近,靠近,次一等 ,次的   3★ suc 4★ sup   5★ suf     6★ sur 在~下面