学习C++些许时间了,随便写点东西吧。 重载/覆盖/隐藏
1.重载
相同作用域,函数名相同,参数不同,Virtual关键字可有可无。
2.覆盖
不同作用域,函数名相同,参数相同,有Virtual关键字。
3.隐藏
一般是父类和子类之间,函数名相同,参数不同时,不管有没有virtual关键字都会导致隐藏。
函数名相同,参数相同,基类没有virtual关键字的时候也发生隐藏。
例如
class Base
{
public:
void fun(int nIndex);
}
class Child: public Base
{
public:
void fun(int nIndex, int input);
}
int main(int argc, char * argv[])
{
Child objChild;
objChild.fun(0); //编译的时候就会报错,因为发生了隐藏
return 0;
}
还有一个C++中子类父类同名函数的调用的规律总结:
如果是非虚函数,与调用指针关联。
如果是虚函数,与指针所指对象关联。