C++学习笔记2

2024.08.02

1.关于虚函数:

     (1)定义:是在基类中进行的,成员函数声明前冠以关键字virtual。

     (2)作用:虚函数使C++支持运行时的多态性。

     (3)用法:a.基类的成员函数前加 virtual ,且在派生类中重载。

                       b.用指针调用实际对象的成员函数。

     (4)特性:a.动态多态性 b.在基类中声明 c.继承性 d.运行时决策

     (5)注意事项:

a.派生类重载时,函数原型要与基类原型完全相同。

b.赋值兼容前提:派生类从基类公有继承。

   虚函数基础:赋值兼容规则。

   因此,通过虚函数使用多态性机制时,必须公有派生。

c.派生类对虚函数重载时,virtual可写可不写,最好写。

d.只有通过基类指针访问虚函数才能获得运行时的多态性。

 (m.show()以及M::show()也可访问,但是静态连编,没有充 分利用虚函数的特性)

e.虚函数必须是所在类的成员函数,不能是友元函数、静态成员函数、内联函数、构造函数。

f.析构函数可以是虚函数,而且通常说明为虚函数。

2.发现豆包是一个很好用的工具,可以很好地辅助我的学习!

(1)弄清楚了using namespace std;的使用:

(2)弄清楚了三种函数参数传递的方式:

         同时对问题的解惑也很细致:

         但是对一些内容也存在准确性的问题,所以也要仔细辨别:

         此处得到的仍然是错误的结果,所以可以辅助使用,不能过度依赖。

2024.08.03

1.虚析构函数:

     (1)引入:无虚析构函数时,静态连编,当用delete撤销无名对象时,系统只执行基类的析构函数,不执行派生类的。

     (2)定义:没有类型,也没有参数。

     (3)特点:基类为虚析构函数时,其派生类自动为虚析构函数。

2.虚函数与函数重载:

     (1)普通函数重载:参数或参数类型必须有所不同。

     (2)重载虚函数:与基类中虚函数类型完全相同。

           (特况:a.仅返回类型不同,系统出错;

                          b.仅函数名同,为普通重载,丢失虚函数特性。)

3.纯虚函数:

     (1)定义:声明虚函数时被“初始化”为0的函数。无函数体,不具备函数功能,不能被调用。eg: virtual void show()=0;

     (2)作用:基类中预留一个函数名,具体功能留给派生类定义。

4.抽象类:

     (1)定义:如果一个类至少有一个纯虚函数,那么该类为抽象类。

     (2)目的:定义抽象类的唯一目的是用它为基类建立派生类。

     (3)使用:a.只能作为基类,不能建立对象,可建立指针或引用。

                         b.不允许从具体类(不含纯虚函数的普通类)中派生出抽象类。

                         c.抽象类不能作函数的参数类型、返回类型或显式转换类型。

                        d.如果派生类只继承基类的纯虚函数,没有定义,则其仍是抽象类;若派生类给出                             了基类纯虚函数的实现,则不再是抽象类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值