1.继承权限
public(公有访问) | protected(保护访问) | private(私有访问) | |
public(公有继承) | 继承后变成public(公有访问) | 继承后变成protected(保护访问) | 继承后不可访问 |
protected(保护继承) | 继承后变成protected(保护访问) | 继承后变成protected(保护访问) | 继承后不可访问 |
private(私有继承) | 继承后变成private(私有访问) | 继承后变成private(私有访问) | 继承后不可访问 |
注:protected和private的区别:
protected:在派生类中可以访问,类外不可访问
private:派生类和类外均不可访问
2.继承定义格式
3.同名隐藏
定义:基类,派生类某一个成员变量同名,或者某一个成员函数同名(只要函数名一样,不管参数列表,返回值是否一样),通过派生类调用该成员变量或成员函数时,只会调用派生类的,基类的看不到,这种现象称为同名隐藏。
#include <iostream>
#include <windows.h>
using namespace std;
class Base
{
public:
int _pub;
void Fun1()
{
cout<<"Base::void Fun1()"<<endl;
}
void Fun2(int)
{
cout<<"Base::void Fun2(int)"<<endl;
}
int Fun3()
{
cout<<"Base::int Fun3()"<<endl;
return 0;
}
};
class Derived:public Base
{
public:
int _pub;
void Fun1()
{
cout<<"Derived::Fun"<<endl;
}
void Fun2()//与Base中Fun2相比不带参数
{
cout<<"Derived::void Fun2(int)"<<endl;
}
void Fun3()//与Base中Fun3相比返回值不同
{
cout<<"Derived::void Fun3()"<<endl;
}
};
int main()
{
Derived d;
Base b;
b._pub=1;
d._pub=2;
cout<<d._pub<<endl;
d.Fun1();
d.Fun2();
d.Fun3();
system("pause");
return 0;
}
结果: