rfg@lupine.ncd.com (Ron Guilmette) (12/14/90)
I'm at it again. Picking nits as usual. Given: struct S { int i; }; void S (void); void foobar () { S (); } Did I call the explicitly declared function `S' or did I call the implicitly compiler-created constructor for `struct S'? References to E&S would be appreciated.
lijewski@batcomputer.tn.cornell.edu (Mike Lijewski) (12/17/90)
In article <3000@lupine.NCD.COM> rfg@lupine.ncd.com (Ron Guilmette) writes: >I'm at it again. Picking nits as usual. > >Given: > > struct S { > int i; > }; > > void S (void); > > void foobar () > { > S (); > } > >Did I call the explicitly declared function `S' or did I call the >implicitly compiler-created constructor for `struct S'? Good question. On page 27 of E&S is an example very similar to yours. The answer in that case is the function `S' would be called. If we then turn to page 167 there is an example of a class X with an explicit constructor w/ prototype X(int);. If we also have a function void X(int); the statement X(1); becomes ambiguous. Seems to me we need a much better explanation of when an implicitely-defined default constructor is generated and, a bit more explicitely, can I call such a constructor in a program. I would also like to know why a default constructor is generated for EVERY class which has no explicitely- declared constructors (page 264 E&S). Seems to me this contradicts the example on page 27. -- Mike Lijewski (H)607/272-0238 (W)607/254-8686 Cornell National Supercomputer Facility ARPA: lijewski@theory.tn.cornell.edu BITNET: mjlx@cornellf.bitnet SMAIL: 25 Renwick Heights Road, Ithaca, NY 14850