类外访问类的私有(保护)成员

2023-11-10

在C++中类外访问类的私有(private)或保护(protected)成员变量,有以下几种方法:
(1)通过在类中定义共有的成员函数,用成员函数去调用类的私有成员变量,在类外就可以实现对私有成员变量的访问;

(2)在类外实例化一个类的对象,定义一个类的指针,并将其赋值为该对象的地址,再定义一个整形指针变量,赋值为该类指针,那么对该指针变量解引用就得到第一个成员变量的值,还可以修改值;

(3)通过友元类或者友元函数访问。

class myclass
{
public:
	friend void myfriend();
	friend class myclassfriend;

	void fun(int a_)
	{
		a = a_; //类内定义一个公有成员函数
	}
	
private:
	 int a, b;
	 
};
void myfriend()
{
	myclass my;
	my.a = 56;  
}

class myclassfriend
{
public:
	myclass m;
	void myclassfriend_fun()
	{
		m.a = 56;
	}
};
int main()
{
	myclass myobj;
	myobj.fun(56); // 类外通过成员函数去改变私有成员变量

	myclass* p = &myobj;
	int* pp = (int*)p;
	*pp = 56; //此时a变为56

	myfriend(); //通过友元函数改变

	myclassfriend myobj2;
	myobj2.myclassfriend_fun();//通过友元类改变
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类外访问类的私有(保护)成员 的相关文章

随机推荐

  • CNN - 卷积神经网络输入层

    数据输入层 Input Layer 1 数据预处理 进行预处理的主要原因是 输入数据单位不一样 可能会导致神经网络收敛速度慢 训练时间长 数据范围大的输入在模式分类中的作用可能偏大 而数据范围小的作用就有可能偏小 由于神经网络中存在的激活函
  • 双向绑定鼠标移入移出事件解决左右拼接table鼠标移到目标表格样式同步展示问题

    问题 用两个表格tabale显示一组同源数据 两个table显示数组的需求不同 但是相关联 当鼠标移入移出相应 行 也就是 的时候 另一个table表格中相依 行 也要动态显示出来对应 css样式 思路 利用两个不同得table元素下的 添
  • 华为机试原题4.26

    1 报数游戏 输入一个整数m 有1 lt n lt 100个人参与报数游戏 从1 2 m报数 报m的人淘汰 下一轮接着从1开始报数到m 一直循环 直到剩下的人数小于m时停止 输入 m 输出 最终剩下的m 1个数 例 输入 3 输出 58 9
  • 解决eclipse安装了spring ide插件,但是在window-preferences里没有spring相关的选项的问题

    很多人的myeclipse eclipse装了spring插件后 出现了一些问题 大家装了spring插件之后 myeclipse eclipse就会显示如下图 我这里也没有spring的相关选项 但是 在项目里new右键菜单以及首首选项都
  • 容灾恢复

    欢迎关注 全栈工程师修炼指南 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 涉及 企业运维 网络安全 应用开发 物联网 人工智能 大数据 学习知识 花开堪折直须折 莫待无花空折枝 作者主
  • 响应式布局的实现方法和原理

    昨天我在马海祥博客上跟大家详细的介绍过 什么是响应式网页设计 我觉的响应式网页设计不仅仅是一种趋势 还更是一个新的设计解决方案 它有助于解决不同的分辨率和设备 台式电脑 笔记本电脑 平板 手机 相关的设计问题 既然是设计的问题 这里就会涉及
  • 怎样编写好的API?看完你就知道了!

    点击上方 编程技术圈 关注 星标或置顶一起成长 后台回复 大礼包 有惊喜礼包 每日英文 Do a plain and neat person looking to stay in the small and light things awa
  • Flutter 如何实现禁止手机横屏的功能

    来源 https sexywp com flutter disable landscape mode htm 在一些特定的 App 里 我们不希望手机横屏的时候 App 发生旋转 比如微信 企业微信都是这样的 代码可以这样设定 import
  • C 标准库 - 《stdlib.h》

    原文链接 https www runoob com cprogramming c standard library stdlib h html 简介 stdlib h 头文件定义了四个变量类型 一些宏和各种通用工具函数 库变量 下面是头文件
  • 基础知识:虚拟机的构成和cpu的虚拟化

    1 计算虚拟化包括了 一虚多 和 多虚一 现在阶段硬件能力过盛 一虚多 成为主流 2 裸金属架构更适合部署在资源池内如VMWARE CitrixXenServerv RHEV 适合企业使用 寄居架构适合单机 适合个人折腾 3 全虚拟化和半虚
  • vscode配置golang远程开发调试环境

    1 vscode配置golang远程开发调试环境 文章目录 1 vscode配置golang远程开发调试环境 1 1 golang远程开发应用场景 1 2 远程开发调试环境搭建 1 3 远程debug运行配置 1 1 golang远程开发应
  • [以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用

    数字签名算法在Ethereum中的应用不少 目前已知至少有两处 一是在生成每个交易 Transaction tx 对象时 对整个tx对象进行数字签名 二是在共识算法的Clique算法实现中 在针对新区块进行授权 封印的Seal 函数里 对新
  • Vue-Cli的简单入门使用

    说明 这篇文章是为了让我和组里同学快速上手 学会使用Vue Cli的基本使用而写的 里面可能有许多错误 还请仔细识别 当然 欢迎指正 Vue Cli简单使用 说明 框架的创建 创建代码 安装时报错及解决办法 安装完毕后的构建操作 报错及解决
  • 必看五大安全趋势 Fortinet全球威胁态势报告发布

    全球领先的网络安全解决方案提供商Fortinet NASDAQ FTNT 于近日发布2021年下半年 全球威胁态势报告 据报告显示 当前全球网络攻击的自动化和攻击速度均显著提升 更具破坏性 不可预测性且更加持续的网络犯罪正快速演进 此外 伴
  • win10+使用cmake编译最新的ceres-solver库

    参考文献 点击这里访问 感谢大佬 说明 我这个只编译了release版本 如果还需要debug版本 cmake编译和vs编译都需要另外设置一些东西 我没有弄 文章目录 参考文献 说明 1 需要使用的库 2 需要的工具 3 准备工作 3 1
  • python学习笔记—— socket编程

    上篇 https blog csdn net qq 42489308 article details 89388112 socket编程 什么是socket 简称套接字 是进程间通信的一种方式 它与其他进程间通信的一个主要不同是 它能实现不
  • vue的组件化开发

    vue的组件化开发 组件 Component 是 Vue js 最强大的功能之一 组件可以扩展 HTML 元素 封装可重用的代码 官方文档 https cn vuejs org v2 guide components registratio
  • go context学习

    context学习 context的struct设计 type Context interface Deadline deadline time Time ok bool Done lt chan struct Err error Valu
  • shell_exec() has been disabled for security reasons错误怎么解决?

    ytkah在用composer安装插件时出现了shell exec has been disabled for security reasons错误提示 这个是php配置的问题 shell exec 函数被禁用了 怎么解决呢 shell e
  • 类外访问类的私有(保护)成员

    在C 中类外访问类的私有 private 或保护 protected 成员变量 有以下几种方法 1 通过在类中定义共有的成员函数 用成员函数去调用类的私有成员变量 在类外就可以实现对私有成员变量的访问 2 在类外实例化一个类的对象 定义一个