d - 如何在 D 中声明私有(private)类成员?

标签 d private-members compiled-language

这个程序会回显“C”。我如何禁止这样做?

import std.stdio;
void main() {
    class A {
        private void B() {
            writeln("C");
        }
    }
    auto D = new A;
    D.B();
}

最佳答案

在 D 中,private 是模块私有(private)的,而不是类私有(private)的。因此,如果您希望一段代码无法访问某个类的成员,则该类必须位于不同的模块中。

唯一的异常(exception)是如果代码根本无法访问该类,因为它在不同的范围内(例如,如果您的模块中有另一个函数,它无法访问 A,因为它在 main 中)。但只要一段代码可以访问同一模块内的类,那么它就可以访问其所有成员。

关于d - 如何在 D 中声明私有(private)类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24561121/

相关文章:

programming-languages - 为什么解释语言和编译语言之间有如此明显的界限?

c++ - 访问好友功能

c++ - 静态函数如何访问类的私有(private)成员函数(构造函数)

c++ - "Incomplete type"在类中具有与类本身相同类型的成员

javascript - 您如何定义未编译的语言

d - 如何强制 DUB 使用 gdc 而不是 dmd?

metaprogramming - 鸭子类型(duck typing)D

templates - 是否可以在 d/dlang 中使用 AliasSeq 拥有模板类方法?

image - 在 D 中创建新的 .png 图像

python - 循环次数影响效率(解释语言还是编译语言?)