当代码从高级语言转换为低级语言时,访问说明符是否仍然完整?

时间:2018-05-09 02:11:18

标签: c++ assembly

所有以高级语言呈现的私有受保护数据成员是否仍然如此?或者从更高级别的语言更改为汇编时它们是否都会公开?

2 个答案:

答案 0 :(得分:1)

C ++访问规范是对使用C ++语言命名的方式的限制。它们对抽象机器的运行时行为没有影响C ++是根据(除了允许奇怪的内存布局之外)指定的。低级实现反过来基本上模拟所述抽象机器。

所以没有。

答案 1 :(得分:1)

是和否。大部分没有。

私有成员和受保护成员实际上是编译时间。它指导编译器帮助您不要在代码中犯下愚蠢的错误。编译器通过拒绝生成违反限制的汇编代码来做到这一点。

因此,在生成的可执行文件中没有违反规则的代码,因为这样的代码永远不会被成功编译。从这个意义上说,限制仍然存在。

但是在程序集或硬件级别上,没有像私有或受保护的东西。它只是字节。如果你直接在汇编中编写代码,你可以读取所有私有C ++变量,没有什么能阻止你。