社区
C++ 语言
帖子详情
在C++中如何访问一个类里面的私有变量?
jerrykid
2006-08-14 05:37:26
在C++中如何访问一个类里面的私有变量?谢谢大家,除了定义友元之外还有什么其他的好办法吗?今天面试遇到的一个问题,请各位大侠点拨点拨!
...全文
752
13
打赏
收藏
在C++中如何访问一个类里面的私有变量?
在C++中如何访问一个类里面的私有变量?谢谢大家,除了定义友元之外还有什么其他的好办法吗?今天面试遇到的一个问题,请各位大侠点拨点拨!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qtext
2006-08-15
打赏
举报
回复
如果类所在单元已编译成lib/DLL,没有源码的情况下,mengge的第三种方法
*((int *)&a+1) = 4; // 为类的私有变量赋值
是一种较好的办法。
jerrycxl
2006-08-15
打赏
举报
回复
基本是定义自己PUBLIC函数,操作私有成员变量.
踏岸寻柳
2006-08-15
打赏
举报
回复
#include <stdio.h>
class A
{
public:
int a;
private:
int b;
int c;
public:
A()
{
a = 1;
b = 2;
c = 3;
}
void Print()
{
printf("a = [%x:%d], b = [%x:%d], c = [%x:%d]\n", &a, a, &b, b, &c, c);
}
};
int main(int argc, char *argv[])
{
A a;
a.Print();
*((int *)&a+1) = 4; // 为类的私有变量赋值
a.Print();
return 0;
}
踏岸寻柳
2006-08-15
打赏
举报
回复
1. 使用类的public方法来访问;
2. 使用友元来访问;
3. 使用偏移量来访问。
前两种方法属于正统、传统方法,后一种属于剑走偏锋。如:
class A
{
public:
int a;
private:
int b;
int c;
public:
A()
{
a = 1;
b = 2;
c = 3;
}
};
int main(int argc, char *argv[])
{
A a;
printf("A.b address is %x, A.b is %d\n", &a, *((int *)&a+1));
*((int *)&a+1) = 4; // 为类的私有变量赋值
printf("A.b address is %x, A.b is %d\n", &a, *((int *)&a+1));
return 0;
}
阿发伯
2006-08-14
打赏
举报
回复
正确的方法就2种:定义友元或者接口函数。
有时迫不得已要操作别人的类,例如从别人的类派生适合自己的类,想要取得私有数据的时候,不妨使用UPCC(杂食动物) 的方法,那其实就是类实例的this。但当数据多,而且派生层次较深时,很难得到你想要的数据的地址偏移,必须反复测试,同时不同的编译器和编译指令可能改变这个偏移,例如数据对齐指令,也就是移植性差。
jerrykid
2006-08-14
打赏
举报
回复
我说的是在这个类在外部怎么访问类中的私有变量?大家有什么高见?
triace_zhang
2006-08-14
打赏
举报
回复
终极方法:在类里把main()主函数申明为友元,然后就可以在main()里为所欲为了。
chenhu_doc
2006-08-14
打赏
举报
回复
用friend
或者
在class里面写set**()和get**()函数,用接口对private数据成员进行读和写
Dong
2006-08-14
打赏
举报
回复
使用接口/属性调用啊,或者使用
class T
{
int i;
}
T t;
int& i = *(int*)&T;
i = 5;
Heaven_Redsky
2006-08-14
打赏
举报
回复
只要定义public接口函数就好
调用这些函数 想怎么访问就怎么访问了:)
cnhgj
2006-08-14
打赏
举报
回复
声明为友元
ckt
2006-08-14
打赏
举报
回复
通过类的公共函数访问啊
或者是友元函数或者友元类的公共函数都可以访问
triace_zhang
2006-08-14
打赏
举报
回复
在类里定义public函数接口访问私有函数
C++
-- 如何在
类
外
访问
一个
类
中
私有
的成员
变量
?
如何在
类
外
访问
一个
类
中
私有
的成员
变量
? 我在网上搜答案的时候看到大部分回答都是在
类
内部创建
一个
接口,所以此方法我就不再多做赘述,今天我说的方法是利用指针的方法。 话不多说,上代码: class Test { private: int a = 10; int b = 100; }; int main() { Test s; cout &amp;amp;amp;amp;lt;&amp;amp;amp;amp;lt; si...
外部
访问
C++
类
的
私有
方法和
私有
变量
我们知道,
C++
类
私有
方法和
变量
是不允许通过
类
实例直接
访问
的,这样子的操作会导致编译报错。但有没有方法
访问
到呢?有的。 首先,我们需要知道
C++
和C语言本质上是没有什么区别的,
C++
只是语法层面上对C语言的封装。所有C函数,只要有声明和定义,那就可以使用,不存在public和private的区分。
C++
的public, private和protected限定的作用只在于编译期,当我们进入到运行期的时候,就无所谓public/private/protected了。 然后我们知道,函数都是保存在代码段的,那么C
C++
类
外函数怎么
访问
类
内
私有
变量
来获得
类
中
私有
变量
访问
权限的一种方法。依照本人的理解就是拐个弯,在
类
里弄两个函数,然后在
类
的外面用这两个函数来间接
访问
私有
变量
。本人刚开始学编程,以上提供的代码大家图个乐就行。但这两种方法还是有用的。第二种方法是用友元函数,在
类
体
里面
声明一下友元函数,之后就能在
类
外面去
访问
私有
变量
了。本人初学,遇到两种方法。
C++
自定义
类
的对象对于其
私有
变量
的
访问
“在
C++
的
类
的作用域内,可以对其
私有
成员
变量
进行操作” 以下语法规则是不言自明的: 在自定义
类
A的成员函数
中
,可以对该
类
的
私有
成员
变量
进行赋值等操作,但是在
类
定义之外所声明的A
类
的对象aobj是不可以直接
访问
A
类
的
私有
变量
的,只有通过在A
类
的成员函数
中
开放
访问
其
私有
变量
的接口,对象aobj才可以对
私有
变量
进行操作。 在开发
一个
类
的过程
中
,我做了如下的定义 A
类
class A { private: int m_para; public: void Func(); } void A::Fu
C++
访问
类
中
私有
成员
变量
的方法
原则上,
C++
类
中
私有
变量
不允许在
类
之外的其他任何地方
访问
,一般来说功能完善的
类
都会提供get,set方法来操作
类
属性值,还有就是就是通过友元
访问
。但是!但如果没有get、set方法都没有提供,也没有定义友元,比如使用的是第三方提供的.o(或者动态库)来进行开发的,并且实际应用
中
我们确确实实需要改变其
中
某个对象的
一个
私有
参数,有没有什么办法呢?还有一种比较文艺青年的方法,我们知道,
一个
进程有程序段
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章