有时候,我们提供给第三方的C++接口,不希望暴露类的私有数据成员,此时可以这样实现。
interface.h //对外接口
class B;
class A
{
private:
B *pb;
public:
A();
~A();
void getAge();
void setAge();
};
interface.cpp //内部实现
class B
{
private:
int age;
public:
B(int a);
friend class A;
};
B::B(int a){age = a;}
A::A():pb(new B(0))
{
}
A::~A()
{
delete pb;
}
int A::getAge()
{
return pb->age;
void A::setAge(int a)
{
pb->age = a;
}
这样,我们就通过类B将私有数据隐藏起来。对外提供的类A声明为类B的友元,这样就可以通过操作类B达到操作数据的目的。同时,因为类A只包含一个类B的指针,所以对外提供的接口也不需要类B的完全声明,达到了数据隐藏。
interface.cpp
本文介绍了一种使用C++实现对外接口的同时隐藏私有数据的方法。通过定义一个内部类作为数据持有者,并将其设置为接口类的友元,从而在保护数据的同时提供了必要的功能接口。

被折叠的 条评论
为什么被折叠?



