物联网/嵌入式工程师
重磅升级:新增硬件电路设计与实战,让你软硬通吃,同级PK无敌!行业风口、政策倾斜,新晋热门高薪不内卷!0基础一站式就业完整路径,抢占先发优势!
class Coder : public Staff
{
};
可以看到,Coder 在继承 Staff 的时候,有一个 public 关键字,来看看这个 public的作用。
我们之前已经讲过,可以为成员变量和成员函数设置权限修饰符来设置权限。但是这在继承的时候就会产生一个问题:子类中是否要保持对父类成员的权限,而 C++ 将这个选择权交给了程序员。
在 C++ 中,对父类成员的权限,子类中可以进行重新的定义,这个定义就是通过继承时候写的public 来实现的。
可以看到,我们在上述程序中使用了 public 修饰符,那么父类中的成员函数和成员变量将会保持父类的权限。这种是使用最广泛的继承方式,我们把它叫做公有继承。
接下来,再来看一个重要的概念,多态。
我们来尝试做这样一件事,我们在子类和父类中都定义一个同名函数
class Base
{
public:
void func(){
printf("this is Base\n");
}
}
class Child : public Base
{
public:
void func(){
printf("this is Child\n");
}
}
尝试调用一下,为了方便,我们采用分配到堆内存的方式创建一个子类对象,然后调用 func 函数:
int main(int argc,char **argv)
{
Child * obj = new Child();
obj->func();
delete obj;
return 0;
}
运行程序,我们发现这个 func 是子类的 func。我们再对程序做一点修改:
int main(int argc,char **argv)
{
Child * obj = new Child();
Base * baseobj = (Base *)obj;
baseobj->func();
delete obj;
return 0;
}
我们把这个 Child 指针强转成 Base 指针(对象的转换我们在下一个小结详细讲解),这时候,再来运行一下。我们发现,这一次运行的却是父类的 func 函数。
请验证,完成请求
由于请求次数过多,请先验证,完成再次请求
打开微信扫码自动绑定
绑定后可得到
使用 Ctrl+D 可将课程添加到书签
举报