如何直接访问类的私有成员?

How to access private members of a class directly?

本文关键字:成员 何直接 访问      更新时间:2023-10-16

我有一个家庭作业,我被问到如何访问类的私人成员并在 c++ 中修改它们。我搜索了它,我发现我们可以使用类型转换和指针来做到这一点,我知道这是一种未定义的行为,永远不应该使用它。我的问题是: 是否可以在其他面向对象的语言(如java或python(中做这样的事情?

C++编程语言有一个friend说明符。友元函数可以看到其友元类的私有成员。但更多的年轻语言不包括这种机制。因为该机制对于面向对象的编程范式(对于封装(不正确。

在C++中,您可以编写一个成员函数,该函数可以访问和修改私有成员并使该函数公开。这是 OOP 的常用方法。但是,当然,包括C++在内的不同语言可能会提供 hax 以另一种方式修改受保护的成员。

class T {
public:
int get() const {
return _member;
} 
void set(int member) {
_member = member;
} 
protected:
int _member;
};

知名黑客列表

您可以轻松访问 Python 中的任何成员。只要dir什么就做什么。Python 中的私有成员。

您可以使用模板 http://bloglitb.blogspot.com/2011/12/access-to-private-members-safer.html 破解C++成员。它比使用指针安全得多。

您可以通过 Java https://docs.oracle.com/javase/tutorial/reflect/中的反射访问私有成员。

通常,任何允许您调试代码的语言也应该以某种方式显示受保护的变量。