Class declaration
Bill Baxter
dnewsgroup at billbaxter.com
Fri Oct 5 01:49:45 PDT 2007
negerns wrote:
> I have been testing/configuring a UML tool to generate D classes/files
> when I came across D's class attributes scope and final. I wondered if D
> classes have other attributes like public, private, protected. So I
> tried it and tested some D source codes. Here is one that I tried:
>
> private protected public class A {
> public this() { }
> }
>
> void main() {
> auto a = new A();
> }
>
> This code was successfully compiled using dmd 1.021 without errors or
> warnings, much to my surprise. Could anyone please tell me why is this so?
You're certainly not the first one to ask. :-)
First off protection attributes don't apply within a module. Everything
in one file has access to everything else. D doesn't have C++'s
"friend" so that's sort of D's substitute.
Second, the compiler is overly permissive about mixed attributes. I
think there are bugs on file for it. But fixing it is low priority
since the amount of harm it causes is small.
--bb
More information about the Digitalmars-d-learn
mailing list