函数隐藏:发生在基类和派生类中,函数完全相同时且基类没有虚函数。
或者函数只是同名,参数列表不同,无论是否有虚函数,都讲发生隐藏。
关于隐藏:在没有虚函数的情况下,发生函数隐藏。在编译的时候进行早期绑定,子类对象转换为父类对象后,用父类对象指针去调用的时候,我们还是调用父类的所在内存。因为子类对象所占内存的前半部分仍然是父类对象的内存。
derive.h
#ifndef _DERIVE_H
#define _DERIVE_H
#include<iostream>
#include<cstring>
using namespace std;
class P
{
public:
virtual void func()
{
cout << "class P Base Function" << endl;
}
};
class B:public P
{
public:
/***
virtual void func()
{
cout << "class B Base Function" << endl;
}
***/
void func(int x)
{
cout << "class B Derive Function" << endl;
}
};
#endif
app.cpp
#include <iostream>
#include <cstring>
#include "derive.h"
int main()
{
B b;
b.func();
P *ptr = &b;
ptr->func();
return 0;
}