如何让一个外部可见的成员在被继承时变不可见?

hind24 2012-07-13 09:06:25
某类有一函数,为了让外部能够访问而设成public
但是希望此类的子类无法访问此函数,至少不要让外部访问子类的此函数
感觉保护继承和私有继承都不行,因为这样会使父类public的成员继承后变得无法访问
有没有办法?
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
woomevan 2012-07-13
  • 打赏
  • 举报
回复
private
using
学习了
hind24 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

private
using
[/Quote]谢谢指教,虽然这个方法对我的类来说比较费劲,因为基类里面有大量public成员,private继承之后我还得全部用using恢复成public
不过我应该可以用public继承,用using把要隐藏的函数改成private,这样至少外部不可访问派生类的这个成员函数
也许我的类设计的不太好,不过交流交流还是有益的,请问还有别的办法吗?
W170532934 2012-07-13
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

class CBase
{
public:
void Foo1()
{
cout<<"Foo1"<<endl;
}
void Foo2()
{
cout<<"Foo2"<<endl;
}
};

class CDerived:private CBase
{
public:
void Fun()
{
cout<<"Fun"<<endl;
}
using CBase::Foo1;
};

int main()
{
CDerived obj;
obj.Foo1();
return 0;
}
Saleayas 2012-07-13
  • 打赏
  • 举报
回复
private
using

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧