在 class 之外可见的私有成员

Private members visible outside the class

为什么当断点在 class 之外时,我可以在快速观察 window 中看到我的 class 的私有成员?

我的断点在ConsoleApplication.cpp 我的 class 定义在 XmlSignature.h

我可以看到这些私有成员:Transforms_Root_elementxmlDocument

这是我的 class:

ref class XmlReference
{
public:
    XmlReference(String^ URI);
    virtual ~XmlReference();

    String^ URI;
    XmlElement^ Reference_element;

    String^ ns_ds = "http://www.w3.org/2000/09/xmldsig#";

    XmlNode^ AddTransform(String^ strAlgorithm);
    XmlNode^ AddTransform(String^ strAlgorithm, String^ strParameterName, String^ strParameter);

    List<XmlNode^>^ Transforms = gcnew List<XmlNode^>;
private:

    XmlNode^ Transforms_Root_element = nullptr;
    XmlDocument^ xmlDocument;

    //Called by AddTransform
    XmlNode^ CreateTransformElement(String^ strAlgorithm);
};

这是我能看到的:

这是一项功能,有助于调试 :-)。 Class 编译器确保成员可见性以强制执行面向对象的编程。正如@Medinoc 观察到的那样,.net 运行时还保护 class 的私有和受保护内存不被其他上下文访问。

在任何情况下,调试器都可以完全访问内存并可以显示所有成员内容。