我想让我的基类中的所有函数对我的客户端不可见,只能通过我的派生类访问。
有没有办法在C ++中执行此操作?
谢谢!
答案 0 :(得分:0)
有两种方式
使用受保护的关键字
class A{
protected:
void f(){
std::cout << "F" << std::endl;s
}
};
class B:public A{
// access f() here...
};
任何派生类都可以从A类访问f()
函数。
第二种方式: 制作A级的B级朋友类。
#include <iostream>
class A{
private:
void f(){
std::cout << "F" << std::endl;
}
friend class B;
};
class B:public A{
A obj;
public:
void accessF(){
obj.f();
}
};
int main(){
B obj;
obj.accessF();
return 0;
}
答案 1 :(得分:0)
使用access-specifier(如果基类不在您的控制之下):
class A
{ public:
void f() {}
void h() {}
};
class B: private A // all members of A are private
{ public:
void g()
{ f();
}
using A::h; // adjust access
};
int main()
{ A a;
a.f();
B b;
b.g();
b.h();
b.f(); // error: 'void A::f()' is inaccessible
}