首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C++中的私有函数覆盖公共虚函数

在C++中,私有函数不能覆盖公共虚函数。这是因为私有函数只能在类内部访问,而虚函数需要在派生类中进行重写。如果私有函数覆盖了公共虚函数,那么派生类将无法访问这个私有函数,从而无法重写它。这违反了C++的访问控制规则。

如果您想要在派生类中重写一个虚函数,那么这个函数必须是公共的。这是因为派生类需要访问这个函数,并且需要重写它。如果这个函数是私有的,那么派生类将无法访问它,从而无法重写它。

如果您想要在派生类中重写一个虚函数,并且同时不想让其他类访问这个函数,那么您可以将这个函数声明为受保护的(protected)。这样,派生类可以访问这个函数,并且重写它,但是其他类将无法访问它。

总之,私有函数不能覆盖公共虚函数,因为私有函数只能在类内部访问,而虚函数需要在派生类中进行重写。如果您想要在派生类中重写一个虚函数,那么这个函数必须是公共的。如果您想要在派生类中重写一个虚函数,并且同时不想让其他类访问这个函数,那么您可以将这个函数声明为受保护的(protected)。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++多态

在 C++ 程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中,一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法);也就是说,每个对象可以用自己的方式去响应共同的消息所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。换言之,可以用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。在C++中主要分为静态多态和动态多态两种,在程序运行前就完成联编的称为静态多态,主要通过函数重载和模板实现,动态多态在程序运行时才完成联编,主要通过虚函数实现。

01

重载(overload)、覆盖(override)、隐藏(hide)的区别

这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一概念却使问题变得有点复杂了,下面说说它们的区别吧。 重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。 覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。 隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了。隐藏与另外两个概念表面上看来很像,很难区分,其实他们的关键区别就是

06
领券