命名空间和私有变量如何在程序集中工作?

iCo*_*unk 1 c++ assembly namespaces

它是如何工作的?是存储在特殊寄存器或内存中的变量吗?我在视觉上看注册/内存窗口,但我无法理解:(

#include <iostream>
using namespace std;

namespace first
{
  int x = 5;
  int y = 10;
}

namespace second
{
  double x = 3.1416;
  double y = 2.7183;
}

int main () {
  using first::x;
  using second::y;
  cout << x << endl;
  cout << y << endl;
  cout << first::y << endl;
  cout << second::x << endl;
  return 0;
}


class CRectangle {
    int x, y;
  public:
    void set_values (int,int);
    int area (void);
  private:
    int param;
  } rect;
Run Code Online (Sandbox Code Playgroud)

chr*_*ock 8

从机器的角度来看,没有什么不同private或者namespace.这些只是编译器的标识符.也就是说,编译器会强制执行访问规则,这就是为什么在执行不应该执行的操作时遇到编译器错误的原因.但是,编译器最终生成的二进制代码不会对数据的含义做任何区分.