这个程序会回显“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/