通常,我们希望使用私有继承将实现细节隐藏到基类中。如果这是真的,
1)为什么会再次出现名称发布功能?仅仅是为了语言完整性还是有实际用途?
2)即使我公开了基类函数的名称,派生类仍然可以声明另一个具有相同名称的函数。请考虑以下代码。
#include "iostream"
using namespace std;
class Base {
public:
int zoo;
Base() {zoo =5;}
int sleep() const {return 3;}
};
class Derived : Base { // Private inheritance
public:
using Base::zoo;
using Base::sleep;
int sleep() const { return 4.0; }
};
int main() {
Derived der;
der.sleep();
cout<<" zoo is : "<<der.zoo<<endl;
cout<<" Sleep is : "<<der.sleep()<<endl;
}
在上面的代码片段中,即使我们公开了名称,我们仍然可以在派生类中声明该名称,并且可以访问成员变量的基类版本。如何管理内存?
谢谢你。
http://en.cppreference.com/w/cpp/language/using_declaration
如果派生类已经具有具有相同名称,参数列表和限定的成员,则派生类成员将隐藏或覆盖(不与)从基类引入的成员。
该链接具有特定示例,这些示例精确地说明了您正在做的事情,再次重申了我在上面引用的内容,以及派生成员只是简单地隐藏了基本成员。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句