C++ 如何停止对私有数据成员的访问?

C++ 如何停止对私有数据成员的访问?,c++,oop,C++,Oop,我最近开始学习OOP概念,想知道到底是什么阻止程序访问类的私有数据成员?它们是加密的吗?或者只是编译器不会编译 我的意思是,除非数据被加密。是什么阻止程序从内存中访问这些位?C++使用private是为了防止意外误用(“哎呀!我不是想读取该值”),而不是防止活动的颠覆(“我会将指针插入对象的中间并读取字节。”)如果需要,您完全可以通过直接读取对象的字节来破坏私有访问,但这通常不是一个好主意,因为如果对象的内部表示稍后发生更改,那么绕过访问说明符的代码就不一定再起作用了 P>内部,大多数C++编

我最近开始学习OOP概念,想知道到底是什么阻止程序访问类的私有数据成员?它们是加密的吗?或者只是编译器不会编译


我的意思是,除非数据被加密。是什么阻止程序从内存中访问这些位?

C++使用private是为了防止意外误用(“哎呀!我不是想读取该值”),而不是防止活动的颠覆(“我会将指针插入对象的中间并读取字节。”)如果需要,您完全可以通过直接读取对象的字节来破坏私有访问,但这通常不是一个好主意,因为如果对象的内部表示稍后发生更改,那么绕过访问说明符的代码就不一定再起作用了


<> P>内部,大多数C++编译器生成程序,它们对私有数据成员不感兴趣(这就是为什么你可以在调试器中读取它们),如果有人试图读取它们,只会提高编译器错误。

< P> C++的私有使用是为了防止意外误用(“OOP!我不是有意读那个值”)。你完全可以通过直接读取对象的字节来颠覆私有访问,而不是对抗活动的subversion(“我会将指针插入对象的中间并读取字节。”),但这通常不是一个好主意,因为如果对象的内部表示稍后发生更改,那么绕过访问说明符的代码就不一定再起作用了


<>内部,大多数C++编译器生成程序,它们对私有数据成员不感兴趣(这就是为什么您可以在调试器中读取它们)如果有人试图读取它们,只需引发编译器错误。

可以提供一个特定示例,说明从不应该访问私有成员的地方访问私有成员的含义?
公共
受保护
,编译程序和评估标识符(及其含义)时,编译器会评估
private
。C++提供了规避这种方法的方法,尽管大多数都是或多或少的未定义行为。这与数据本身的安全性无关。这是关于强迫程序员遵守API设计师(甚至可能是程序员本人)希望遵循的概念。请提供一个具体示例,说明从不应该访问私有成员的地方访问私有成员是什么意思?
public
protected
,编译程序和评估标识符(及其含义)时,编译器会评估
private
。C++提供了规避这种方法的方法,尽管大多数都是或多或少的未定义行为。这与数据本身的安全性无关。它是关于强迫程序员接受API设计者(甚至程序员自己)想要遵循的概念。