C++---------用友元实现数据隐藏

本文介绍了一种使用C++实现对外接口的同时隐藏私有数据的方法。通过定义一个内部类作为数据持有者,并将其设置为接口类的友元,从而在保护数据的同时提供了必要的功能接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候,我们提供给第三方的C++接口,不希望暴露类的私有数据成员,此时可以这样实现。


interface.h    //对外接口

class B;

class A

{

private:

     B *pb;

public:

   A();

   ~A();

   void getAge();

   void setAge();

};


interface.cpp       //内部实现

#include "interface.h"

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

self-motivation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值