IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 编程语言比较 -> 正文阅读

[C++知识库]编程语言比较

C++ VS Java

表述方法

  • 数据成员和成员函数
  • 属性和方法

数据/属性和函数/方法修饰符

  • 一般是同一种权限的数据和函数写一起
  • 一般都是每个函数分别写

布尔类型

  • bool
  • boolean

继承

  • C++

    • 继承方式

    • 权限问题

      • 父类的private成员子类不可访问
    • 构造函数

    • 虚基类

      • C++语言允许程序中只建立公共基类的一个副本,将直接基类的共同基类设置为虚基类(virtual base class),这时从不同路径继承过来的该类成员在内存中只拥有一个副本。

      • 虚基类的构造函数

        • 由于派生类的对象中只有一个虚基类子对象。为保证虚基类子对象只被初始化一次,这个虚基类构造函数必须只被调用一次。
        • 规定将在建立对象时所指定的类称为最直接派生类。
          虚基类子对象是由最直接派生类的构造函数通过调用虚基类的构造函数进行初始化的。
  • Java

    • public class A extends B{}
    • 权限问题
      • 父类的private属性和方法子类不可访问
    • 构造函数

多态

  • C++

    • 函数重载:静态多态(编译时多态)

      • 是指在程序编译时系统就能够确定要调用的是哪个函数,也被称为编译时多态。
      • 通过函数的重载(overload)及运算符重载来实现。——通过参数区分
      • 函数重载注意事项
        • 不能仅靠函数的返回值来区别重载函数,必须从形式参数上区别开来。
        • 不同参数传递方式也无法区别重载函数
        • 由typedef定义的类型别名并没有真正创建一个新的类型
      • 实现
        • 类中重载成员函数(java中称为方法重载)
          • 根据参数的特征加以区分
        • 派生类中的同名成员函数(java称为方法重写)
          • 使用“ :: ”加以区分
          • 使用对象加以区分
      • 例子
        • 基类指针中调用同名成员函数
          • 通过基类指针只能访问从基类继承的成员
        • 基类指针中调用虚函数
    • 虚函数

      • 关联
        • 静态关联
          • 静态关联(static binding)在运行前进行的关联
          • 又称为早期关联。
        • 动态关联
          • 动态关联(dynamic binding)在编译后执行该过程
          • 也被称为滞后关联
      • 定义
        • C++中的虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或者基类引用来访问这个同名函数。
      • 注意以下两点:
        • 1.virtual只能使用在类定义的函数原型声明中,不能在成员函数实现的时候使用,也不能用来限定类外的普通函数。
        • 2.用virtual声明类的非静态的成员函数,只用于类的继承层次结构中。不能将类外的普通函数(友员)和静态成员函数声明成虚函数。
      • 使用虚函数的几点说明:
        • virtual具有继承性,在派生类覆盖基类虚成员函数时,既可使用也可不用virtual来限定,二者没有差别,默认派生类中的重写函数是具有virtual的。
        • 在派生类中重新定义虚函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数完全相同。否则不能实现多态性, 为函数重载.
    • 虚析构函数

      • 注意
        • 构造函数不能是虚函数
          • 建立一个派生类对象时,必须从类层次的根开始,沿着继承路径逐个调用基类的构造函数
        • 析构函数可以是虚函数
          • 虚析构函数用于指引 delete 运算符正确析构动态对象
      • 当基类的析构函数为虚函数时,无论指针指的是同一类族的哪一个类对象,对象撤销时,系统会采用动态关联,调用相应的析构函数,完成该对象的清理工作。
      • 习惯把析构函数声明为虚函数,即使基类并不需要析构函数,以确保撤销动态存储空间时能够得到正确的处理。
    • 纯虚函数与抽象类

      • 纯虚函数
        • 在许多情况下,在基类中不能给出有意义的虚函数定义,这时可把它说明成纯虚函数,把它的定义留给派生类来做。
        • 纯虚函数的作用
          • 在基类中为其派生类保留一个函数的名字。以便派生类根据需要对它进行定义, 否则无法实现多态性。
          • 纯虚函数不具备函数的功能,一般不能直接被调用。
        • 从基类继承来的纯虚函数,在派生类中仍是虚函数。
      • 抽象类(不必显式定义)
        • 如果一个类中至少有一个纯虚函数, 那么这个类被称为抽象类(abstract class)。
        • 抽象类中不仅包括纯虚函数,也可包括虚函数。
        • 注意1
          (1). 抽象类必须用作派生其他类的基类可使用指向抽象类的指针支持运行时多态性。而不能用于直接创建对象实例。
          (2) 派生类中应重写基类中的纯虚函数,否则派生类仍将被看作一个抽象类。
        • 注意2
          (1) 一个基类如果包含一个或一个以上纯虚函数,就是抽象基类。抽象基类不能也不必实例化对象。
          (2) 抽象基类一般并不是现实存在的对象的抽象,可以没有任何物理上的或其他实际意义方面的含义
          (3) 在类的层次结构中,顶层或最上面的几层可以是抽象基类。抽象基类体现了本类族中各类的共性,把各类中共有的成员函数集中在抽象基类中声明。
  • Java

    • 方法重载与方法重写
    • 抽象方法和抽象类
      • 抽象方法
      • 抽象类(限制实例化)
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:34:54  更:2021-11-17 12:36:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:48:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码