zoukankan      html  css  js  c++  java
  • C++函数的高级特性——小结

    相对于C语言,C++增加了重载(overload)、内联(inline)、const和virtual四种新机制。

    1 重载

    只能靠参数列表而不能紧靠返回值类型的不同来区分重载函数。编译器根据参数列表为每个参数产生不同的内部标识符。由于编译后的名字不同,C++程序不能直接调用编译后的C函数。C++提供了一个C交换指示符extern “C”来解决这个问题,例如:

    #ifdef __cplusplus
    extern "C" {
    #endif
    #include "myheader.h"
    ...//其他C头文件
    #ifdef __cplusplus
    }
    #endif

    2 重载、覆盖与隐藏的区别

    成员函数被重载的特征是:

    • 具有相同的作用域(即在同一个类定义中)
    • 函数名字相同
    • 参数类型、顺序或数目不同(包括const和非const参数)
    • virtual关键字可有可无

    覆盖是派生类改写了基类的成员函数,其特征是

    • 不同的作用域(分别在基类和派生类中)
    • 函数名字相同
    • 参数列表完全相同
    • 基类函数必须是虚函数

    隐藏是指派生类的成员函数遮蔽了与之同名的基类成员函数,具体规则如下:

    • 派生类的函数与基类的函数同名,但是参数列表有所差异,此时,无论有没有virtual关键字,基类的函数在派生类中会被隐藏(区别于重载)
    • 派生类的函数与基类的函数同名,参数列表也相同,但是基类函数没有virtual关键字,此时,基类的函数在派生类中会被隐藏(区别于覆盖)
    • 覆盖是一种特殊的隐藏

    3 参数的默认值

    参数默认值放在函数的声明中,不能放在定义体中。

    4 运算符的重载

  • 相关阅读:
    语句
    1101 事务存储引擎触发器函数
    1029 作业
    1029 数据库表以及行的基本操作
    1023 笔记
    1022 作业
    1022 笔记
    1021 笔记
    查看pip已经安装过的包
    查看Python支持的.whl文件版本
  • 原文地址:https://www.cnblogs.com/alwayswangzi/p/6505053.html
Copyright © 2011-2022 走看看