面向对象——意图与逻辑(三)

面向对象——意图与逻辑
面向对象——意图与逻辑 (二)
面向对象——意图与逻辑(三)
面向对象——意图与逻辑(四)

const 型函数

C++ 支持 const 型变量,也支持 const 型函数,但 const 型函数只能为类的成员函数,不可以是全局函数。

当 const 修饰一个函数,称为const 型函数,是告诉编译器,不允许该函数修改成员变量的值。也即const 型函数只能是类的成员函数。

为什么要显式地将基类的析构函数声明为 virtual

virtual 出现的地方一定是为了使用多态机制;

也即,首先一点,基类的析构函数默认为 non-virtual 的;

那为什么显式地将其声明为 virtual 呢,在做基类的情况下,所谓基类,自然有派生类,派生类一般都会有自己的私有成员变量,基类的析构函数仅仅析构了基类自身的成员变量。

归根结底,还是多态,virtual 就是多态的实现机制。

将基类的构造声明为protected

将基类的构造声明为protected的含义:
不允许在外部实例化该类,只允许其派生类调用

继承

所谓共同的基类,则基类的构造对所有的子类都是相同;
这话可从两个方面来理解:

  • (1)如果一个类作为某些子类共同的基类,则该基类的虚方法,构造函数为全部子类所共有;

    基类的成员变量即为所有子类共同的成员变量,且 基类的构造函数也必须在所有子类的构造中予以体现

  • (2)如果想为一些类抽象出一个共同的基类,则应当抽象出为全部类所共有的构造方法;

mutable 与 友元

一个类内只要有 mutable 关键字,就一定会有 const 关键字,否则无 mutable 存在的意义,mutable 是对 const 条件的放松,就好比类内的友元可以访问私有成员变量一样。

但反过来,就不一定了,也即存在 const 关键字,未必会有 mutable 成员变量;存在私有成员变量未必会有友元(但如果存在友元,一定有私有成员变量)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值