C++要点(三)

 

1. 除了构造函数外, 任意非static成员函数都可以是虚函数。保留字virtual只在类内部的成员函数声明中出现, 不能用在类定义体外部出现的函数定义上

 2. 派生类只能通过派生类对象访问其基类的protected数据成员, 派生类对其基类对象的protected成员没有特殊的访问权限.另外, 基类的protected成员函数只能被派生类成员函数访问, 而不能被派生类对象访问, 如下面的sub.baseFun();  会出现编译错误

 

3. C++中的函数调用默认不适用动态绑定。要出发动态绑定, 必须满足两个条件:(1)只有指定为虚函数的成员函数才可能进行动态绑定, 成员函数默认为非虚函数, 非虚函数不能进行动态绑定。(2)必须通过基类类型的引用或指针行函数调用。

4. 使用基类类型的引用或指针, 在编译期间是不知道指针或引用所绑定的对象的类型的, 基类类型的引用或指针可以引用基类类型的对象, 也可以引用派生类类型的对象。无论实际对象具有那种类型, 编译器都将他当做基类类型的对象, 将派生类对象当做基类对象是安全的,因为每个派生类对象都拥有基类子对象。 而且, 派生类继承基类的操作, 即, 任何可以在基类对象上执行的操作也可以通过派生类对象使用。

5. 非虚函数总是在编译时根据调用该函数的对象, 引用或是指针的类型而确定。

 

6.派生类虚函数调用被覆盖的对应的基类函数时, 必须显示的使用作用域操作符。如果不使用,则函数调用会在运行时确定并且将是一个自身调用, 从而导致无穷递归。当显示的使用作用与操作符时, 函数的调用在编译时就确定。

 

7.如果在构造函数或析构函数中调用虚函数, 则运行的是为构造函数或析构函数自身类型定义的版本。

 

8. 在基类和派生类中使用同一名字的成员函数时, 在派生类作用域中派生类成员将隐藏掉基类成员, 即使他们的函数原型不同。要想访问基类的同名函数, 需要使用作用域操作符, 如下:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值