社区
C++ 语言
帖子详情
在C++中如何访问一个类里面的私有变量?
jerrykid
2006-08-14 05:37:26
在C++中如何访问一个类里面的私有变量?谢谢大家,除了定义友元之外还有什么其他的好办法吗?今天面试遇到的一个问题,请各位大侠点拨点拨!
...全文
741
13
打赏
收藏
在C++中如何访问一个类里面的私有变量?
在C++中如何访问一个类里面的私有变量?谢谢大家,除了定义友元之外还有什么其他的好办法吗?今天面试遇到的一个问题,请各位大侠点拨点拨!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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++
系列第2:
C++
2.0(11+14+17+20)详解及多线程实战
(4) 架构与设计模式:需要提升
一个
高度,不再是简单的编码,而是思维模式。 (5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux) (6) 最好学习点Java+Html+javascript等WEB技术。 2.音视频流...
C++
-- 如何在
类
外
访问
一个
类
中
私有
的成员
变量
?
如何在
类
外
访问
一个
类
中
私有
的成员
变量
? 我在网上搜答案的时候看到大部分回答都是在
类
内部创建
一个
接口,所以此方法我就不再多做赘述,今天我说的方法是利用指针的方法。 话不多说,上代码: class Test { ...
外部
访问
C++
类
的
私有
方法和
私有
变量
我们知道,
C++
类
私有
方法和
变量
是不允许通过
类
实例直接
访问
的,这样子的操作会导致编译报错。但有没有方法
访问
到呢?有的。 首先,我们需要知道
C++
和C语言本质上是没有什么区别的,
C++
只是语法层面上对C语言的封装。...
C++
类
外函数怎么
访问
类
内
私有
变量
依照本人的理解就是拐个弯,在
类
里弄两个函数,然后在
类
的外面用这两个函数来间接
访问
私有
变量
。本人刚开始学编程,以上提供的代码大家图个乐就行。但这两种方法还是有用的。第二种方法是用友元函数,在
类
体
里面
声明...
C++
自定义
类
的对象对于其
私有
变量
的
访问
在自定义
类
A的成员函数
中
,可以对该
类
的
私有
成员
变量
进行赋值等操作,但是在
类
定义之外所声明的A
类
的对象aobj是不可以直接
访问
A
类
的
私有
变量
的,只有通过在A
类
的成员函数
中
开放
访问
其
私有
变量
的接口,对象aobj才可以...
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章