3

该程序将回显“C”。我该如何禁止呢?

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

1 回答 1

5

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

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

于 2014-07-03T19:23:59.667 回答