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 に答える