C++之旅:关于缺省参数与virtual、overwrite关键字的声明与定义

缺省参数

缺省参数其实就是函数的形参中给定默认值的参数,并且给定的默认参数是常量(常数或者枚举类型的常量等),例如示例代码中的基类构造函数的声明与定义

CBaseClass(int f_a, EBaseColor f_b = EBaseColor_Red) // 缺省参数的声明(.h文件中)

CBaseClass(int f_a, EBaseColor f_b) // 缺省参数的定义(.cpp文件)

缺省参数通常只在函数声明中给定默认初始值,在函数定义/实现中不进行赋值操作

Virtual关键字

virtual只能用来修饰成员函数(构造函数除外),virtual修饰的函数称为虚函数,虚函数的基本特点如下:

  • 虚函数是动态绑定的,即在程序运行时解析指定
  • 虚函数只有类中的成员函数可以充当,友元、构造函数、static函数、全局函数均不可以
  • 虚函数表明派生类可以重写该函数
  • 虚函数的修饰符Virtual关键字只能在类内声明中使用,类外实现不能使用
  • 基类的虚函数声明必须使用Virtual关键字修饰,但派生类声明中可用可不用,但建议使用

virtual void doSomething();                //虚函数的声明

void CBaseClass::doSomething()      //虚函数的定义/实现

{

}

Override关键字

Override关键字只在派生类重写基类虚函数时使用,其基本特点如下

  • 基类不可使用此关键字
  • Override关键之只能在类内函数声明时使用,放置函数的参数列表括号之后,类外函数定义不可使用
  • 派生类的虚函数可以不使用Override关键字,但建议使用
  • Override是C++11标准引入

virtual void doSomething() override;        // 派生类虚函数声明

void CDerivedClass::doSomething()        // 派生类虚函数定义/实现

{

}

示例代码

// 头文件中的声明(xxx.h)
enum EBaseColor 
{
    EBaseColor_None     = 0u,
    EBaseColor_Red      = 1u,
    EBaseColor_Green    = 2u,
    EBaseColor_Blue     = 3u,
    EBaseColor_NumMax   = 4u
};

class CBaseClass
{
    public:
        CBaseClass(int f_a, EBaseColor f_b = EBaseColor_Red);
        virtual void doSomething();
};

class CDerivedClass : public CBaseClass
{
    CDerivedClass(int f_a);
    virtual void doSomething() override;
};

// cpp文件中的定义(xxx.cpp)
CBaseClass::CBaseClass(int f_a, EBaseColor f_b)
{
}

void CBaseClass::doSomething()
{
}

CDerivedClass::CDerivedClass(int f_a)
: CBaseClass(f_a)
{
}

void CDerivedClass::doSomething()
{
}

​​​​​

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值