这个程序将回应" C"。我怎么不允许这样做?
import std.stdio;
void main() {
class A {
private void B() {
writeln("C");
}
}
auto D = new A;
D.B();
}
答案 0 :(得分:5)
在D中,private
是模块的私有,而不是类。因此,如果您希望一段代码无法访问类的成员,那么该类必须位于不同的模块中。
唯一的例外是,如果代码根本不能访问该类,因为它位于不同的范围内(例如,如果您的模块中有另一个函数,则无法访问A
,因为它在main
内。但只要一段代码可以访问同一模块内的类,就可以访问其所有成员。