剑走偏锋修改类私有成员方法

大家在学习C++语言的时候,讲到类的访问权限问题时,对私有的private部份访问,书上写的都是只能是类内成员可以访问,也就是成员函数可以访问。类外部是不可以访问到,也修改不了值的。

如果不知道什么是类的访问权限,可以先看下这篇文章:类访问控制符

今天跟大家讲一下比较锋茫的方法,在类外用指针来实现修改类内私有pravite成员。(指针是一把双刃 剑,一定要完全理解,不然会伤到自己)。学习以下内容还有预备知识,如果知道类在内存中存放,可以不用看,不明白的可以先看这篇:类中成员定义顺序在内存中排列

现在来讲一种类外修改类私有成员方法:(有不止一种方法,但一定都会要用到指针

以Cpeople类来做讲解,先定义一个与Cpeople类一样的成员变量CpeopleClone类,这点很重要,不这样定义,在使用时会比较方便(往下看就会明白,也许也不会明白,看各人理解)。

定义好CpeopleClone类。使用方法就是分别取CpeopleClone对象和Cpeople对象的地址。将CpeopleClone对象内存内容直接拷贝到Cpeople对象内存中,从而实现在类外修改类私有成员。

剑走偏锋修改类私有成员方法具体代码:

类外修改类私有成员测试结果:

通过指针就实现类外修改类私有成员,但这不是正规传统方法,使用时大家自己把握,要完全理解透后再使用,具体用在哪,这个大家自己去思考。