如何访问私有成员?
2006-09-12 14:34
281 查看
有一个类
class a
{
private:
int k;
};
要求不用友元,不在这个类里添加任何代码,去访问 成员变量k。
可以通过类成员的内部地址实现..由于对于私有的访问语言层并没有限制,是因为编译器的缘故所以类外不能访问私有成员....那么可以通过如下方法来实现:
#include <iostream.h>
class A
{
private:
int k;
int l;
int m;
int n;
public:
printk() {printf("%c/n", k);}
printl() {printf("%c/n", l);}
printm() {printf("%c/n", m);}
printn() {printf("%c/n", n);}
};
int main(int argc, char* argv[])
{
A cd;
int *p = (int*)&cd;
*p = 'k';
cd.printk();
p = (int*)&cd + 1;
*p = 'l';
cd.printl();
p = (int*)&cd + 2;
*p = 'm';
cd.printm();
p = (int*)&cd + 3;
*p = 'n';
cd.printn();
return 0;
}
class a
{
private:
int k;
};
要求不用友元,不在这个类里添加任何代码,去访问 成员变量k。
可以通过类成员的内部地址实现..由于对于私有的访问语言层并没有限制,是因为编译器的缘故所以类外不能访问私有成员....那么可以通过如下方法来实现:
#include <iostream.h>
class A
{
private:
int k;
int l;
int m;
int n;
public:
printk() {printf("%c/n", k);}
printl() {printf("%c/n", l);}
printm() {printf("%c/n", m);}
printn() {printf("%c/n", n);}
};
int main(int argc, char* argv[])
{
A cd;
int *p = (int*)&cd;
*p = 'k';
cd.printk();
p = (int*)&cd + 1;
*p = 'l';
cd.printl();
p = (int*)&cd + 2;
*p = 'm';
cd.printm();
p = (int*)&cd + 3;
*p = 'n';
cd.printn();
return 0;
}
相关文章推荐
- 如何强制访问c++私有成员
- 如何直接访问类的私有成员???
- 如何访问私有成员变量和函数
- 外部如何访问私有成员变量???
- C#中如何访问私有成员
- 如何直接访问类的私有成员?
- 如何强制访问c++私有成员
- [C#]如何访问及调用类中私有成员及方法
- 如何访问私有成员变量和函数 (修正版)
- java中的反射机制——如何访问私有成员的私有方法
- 如何理解 “私有成员只有在声明它们的类和结构体中才是可访问的” ?
- 如何强制访问c++私有成员
- .NET程序内,访问私有或者保护成员的技巧
- (转)C#中访问私有成员
- 访问C++类对象中私有成员变量的方法
- 第四周项目1-三角形类(指针访问私有数据成员)
- 友元函数、友元类、访问私有数据成员、友元关系
- 如何利用反射去访问一个私有的方法
- 使用.net 中的动态方法编程备忘录4(DynamicMethod 类的构造函数及访问其他类的私有成员)
- 黑马---程序员 在外部类中,如何访问内部类中的静态成员呢? outer.inner.function();