c++ - 编译器如何区分 C++ 中的私有(private)数据和公共(public)数据?

标签 c++ compiler-construction

例如,

Class Test {
        private:
            int x;
        public:
            int y;
}obj;

现在可以访问obj.y,但不能访问obj.x

我的问题是编译器如何限制对私有(private)数据的访问?

此外,如何在 C 结构中实现访问说明符?

最佳答案

编译器拥有关于翻译单元(源文件和所有包含的头文件)中所有代码的所有信息,因此可以跟踪哪些成员是私有(private)的,哪些不是。 编译器如何无关紧要,不同的编译器可以不同地实现它。

私有(private)/公共(public)成员是一个纯粹的编译时概念,编译后的可执行代码中没有任何强制执行的内容。

关于c++ - 编译器如何区分 C++ 中的私有(private)数据和公共(public)数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19049298/

相关文章:

asp.net - 使用 NAnt 中的 ASP 编译器构建 ASP .Net MVC 应用程序

使用 Visual Studio 2005 的 C 编译错误

c++ - 如何获取线函数承担字符和对象

在 C 中调用宏 [用于 M68K Freescale 的 HIWARE 编译器]

assembly - 为什么编译器在子程序之间插入 INT3 指令?

c++ - 基于整体类模板专门化一个类方法

performance - 阅读 GHC 核心

c++ - 普通模板在哪里结束,元模板从哪里开始?

c++ - XCode 4.3 中没有调用 'sqrt' 的匹配函数

c++ - Linux 上 codelite、unittest++ 和 g++ 的链接器错误