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