如何在D中声明私有类成员?

时间:2014-07-03 18:42:16

标签: d private-members compiled-language

这个程序将回应" C"。我怎么不允许这样做?

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

1 个答案:

答案 0 :(得分:5)

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

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