目录
前言
前一节我们讲了C++中关于继承的语法和继承的方式,但当父类与子类中出现同名的成员应当如何使用或处理呢?
一、访问子类同名成员
访问的同名成员如果在子类中,我们可以使用“.”直接访问。
include<bits/stdc++.h>
using namespace name;
class fu
{
public:
fu()
{
n=1;
}
int n;
};
class zi:public fu
{
public:
zi()
{
n=2;
}
int n;//子类某成员与父类某成员相同
};
void ceshi()
{
zi z;
cout<<z.n<<endl;//直接调用即可
}
int main(){
ceshi();
return 0;
}
运行后我们发现结果是子类(派生类)中成员定义的数。因此在访问子类同名成员时可以直接访问。
二、访问父类同名成员
如果访问的是父类中的同名成员,我们可以使用作用域符号::来访问,代码示例如下:
include<bits/stdc++.h>
using namespace name;
class fu
{
public:
fu()
{
n=1;
}
int n; //父类与子类的相同成员
};
class zi:public fu
{
public:
zi()
{
n=2;
}
int n; //父类与子类相同成员
};
void ceshi()
{
zi z;
cout<<z.fu::n<<endl;//添加作用域符号
}
int main(){
ceshi();
return 0;
}
总结
除此之外,在同名静态成员处理中也是用此种方式。在同名静态成员处理中又分为通过对象访问和通过类名访问。原理是一样的,通过对象访问使用上述方法,通过类名访问如下示例所示:
cout<<zi::fu::n<<endl;
在子类后面使用作用域符号::访问父类中的元素n。
如需继承多个父类(基类),在需要继承的父类之间用逗号隔开,语法如下所示:
class zi:public fu1,public fu2,public fu3
class 派生类::继承方式 基类1,继承方式 基类2......