C++ primer plus学习笔记(三)——继承、虚函数、RTTI、友元类、异常、final

本文介绍了C++中的继承机制,包括private和protected继承的特点,以及虚函数的工作原理。讲解了析构函数在继承中的行为,特别是虚析构函数的作用。此外,还讨论了纯虚函数、类的提前声明、友元类以及RTTI(运行时类型识别)的相关概念。最后,阐述了动态和静态类型转换、异常处理的throw与noexcept关键字,以及final和override在防止继承和方法重写中的应用。
摘要由CSDN通过智能技术生成

C++ primer plus学习笔记(三)——继承、虚函数、RTTI、友元类、异常、final

继承

前面讲到c++的继承是子类在继承时声明继承的权限,之前描述有点不够准确。以下时书中提及的能继承的成员。
成员函数属性
当使用private继承时,父类的所有public成员在当前子类中会变为private。当使用protected继承时,父类的所有public成员在当前子类中会变为protected。

虚函数

c++中,被定义为虚函数的成员,能被子类重写,虚函数是用virtual修饰的函数。原理是每个有虚函数的类对象内部维护一个的虚方法表成员,记录包含的方法以及对象的类型信息,虚函数只有在运行期(runtime)才会去动态确定使用哪个实现方法
比如:

class SuperClass{
   
    public:
        SuperClass(const int & a){
   
            std::cout<<"superClass "<<a<<std::endl;
        }
        SuperClass(const SuperClass & another){
   
            std::cout<<"copy superClass "<<&another<<" "<<this<<std::endl;
        }
        void show(){
   
            std::cout<<"I am superClass "<<std::endl;
        }
        virtual void vShow(){
   
            std::cout<<"vShow I am superClass "<<std::endl;
        }
};
class SubClass : public SuperClass{
   
 public:
    SubClass(const int & a):SuperClass(a){
   //可以通过这样指定使用的父类构造函数
    }
    void show(){
   
        std::cout<<"I am subClass "<<std::endl;
    }
    virtual void vShow(){
   
        std::cout<<"vShow I am subClass "<<std::endl
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值