C/C++错题集之重载相关

本文详细介绍了C++中的函数重载与多态性的概念,包括如何通过参数类型、个数及const修饰符实现重载,以及静态多态与动态多态的区别。此外还解释了重载与覆盖、隐藏之间的差异。
  1. 可作为函数重载判断依据的有:参数个数、参数类型、const修饰符; 
    不可以作为重载判断依据的有:返回类型。
  2. C++中可以重载的运算符:new/delete、new[]/delete[]、++等。 
    可以重载的运算符:、.、::、?:、sizeof、typeid、.、**、不能改变运算符的优先级。

    引申:重载++和–时是怎么区分前缀++和后缀++的? 
    例如当编译器看到++a(先自增)时,它就调用operator++(a); 
    但当编译器看到a++时,它就调用operator++(a,int)。即编译器通过调用不同的函数区别这两种形式。

  3. C++的多态性分为静态多态和动态多态。 
    静态多态性:编译期间确定具体执行哪一项操作,主要是通过函数重载和运算符重载来实现的; 
    动态多态性:运行时确定具体执行哪一项操作,主要是通过虚函数来实现的。

  4. 一元运算符重载,如果是类的成员函数,则不需要形参,如果是类的友元函数,则需要一个类类型的形参。

        二元运算符重载,如果是类的成员函数,则需要一个形参,如果是类的友元函数,则需要两个形参。

  5. 索引运算符重载不可以是友元函数

  6. 不允许通过函数返回值重载函数

  7. 重载:只有在同一个类定义中的同名成员函数才存在重载关系,主要特点是函数的参数类型和数目有所不同,但不能出现函数参数的个数和类型均相同,重载和成员函数是否是虚函数无关

        覆盖:在派生类中覆盖基类中的同名函数,要求两个函数的参数个数、参数类型、返回类型都相同,且基类函数必须是虚函数。

        隐藏:派生类中的函数屏蔽了基类中的同名函数,两个函数参数相同,但基类函数不是虚函数(和覆盖的区别在于基类是否是虚函数)。两个函数参数不同,无论基类函数是否是虚函数,基类函数都会被屏蔽(和重载的区别在于两个函数不在同一个类中)。

  8. 赋值运算符只能作为类的成员函数重载

  9. 不能被重载的运算符:. \ .* \ :: \ ?: \ sizeof \ typeid

  10. C++中,能作为函数重载判断依据的是:参数类型、参数个数、const

        如果同时在类中,对于函数名相同的const函数和非const函数能够构成重载

  11. 有的运算符只能作为成员函数重载


  12. 只能通过成员函数进行重载:

         = 赋值运算符
         () 函数调用运算符
         [] 下标
         -> 间接成员运算符 

  13. 重载多态和强制多态是指特定多态;

         参数多态和包含多态是指通用多态。

        在C++语言中,这种多态性可以通过强制多态、重载多态、类型参数化多态、包含多态4种形式来实现;

        类型参数化多态和包含多态称为一般多态性,用来系统地刻画语义上相关的一组类型;

      重载多态和强制多态称为特殊多态性,用来刻画语义上无关联的类型间的关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值