zoukankan      html  css  js  c++  java
  • c++中 重载 覆盖 隐藏的区别 附加 mutable笔记

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

    1) 相同的范围(在同一个类中);

    //2) 函数名字相同;

    3) 参数不同;

    4) virtual关键字可有可无。

    覆盖的特征有:

    1) 不同的范围(分别位于派生类与基类);

    //2) 函数名字相同;

    3) 参数相同;

    4) 基类函数必须有virtual关键字。

    隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

    1) 如果派生类的函数与基类的//函数同名但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。

    2) 如果派生类的函数与基类的//函数同名并且参数也相同但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

    =======================================================================

        mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。
        在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
        我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。

    运算符重载      这几个为什么还需要细细探讨下!!!

              (1)只能使用成员函数重载的运算符有:=、()、[]、->、new、delete。

              (2)单目运算符最好重载为成员函数。
              (3) 对于复合的赋值运算符如+=、-=、*=、/=、&=、!=、~=、%=、>>=、<<=建议重载为成员函数。
              (4) 对于其它运算符,建议重载为友元函数。

    运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:

              函数类型 operator 运算符名称 (形参表列)
              { 
              对运算符的重载处理
              }

    重载为类成员函数时参数个数=原操作数个数-1(后置++、--除外)
    重载为友元函数时 参数个数=原操作数个数,且至少应该有一个自定义类型的形参

  • 相关阅读:
    azkaban使用--指定executor
    azkaban使用--依赖dependencies作业
    azkaban用户管理及权限配置
    azkaban架构介绍
    azkaban工作流调度器及相关工具对比
    azkaban的简单使用
    Azkaban安装及分布式部署(multiple-executor)
    配置yum源
    idea搭建Eureka注册中心及配置密码登陆
    kudu导入文件(基于impala)
  • 原文地址:https://www.cnblogs.com/zhangkele/p/8996222.html
Copyright © 2011-2022 走看看