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