Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #36687 > unrolled thread
| Started by | Wayne <wayne@nospam.invalid> |
|---|---|
| First post | 2017-06-20 23:49 -0400 |
| Last post | 2017-06-20 23:49 -0400 |
| Articles | 1 — 1 participant |
Back to article view | Back to comp.lang.java.programmer
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: "default constructor" Wayne <wayne@nospam.invalid> - 2017-06-20 23:49 -0400
| From | Wayne <wayne@nospam.invalid> |
|---|---|
| Date | 2017-06-20 23:49 -0400 |
| Subject | Re: "default constructor" |
| Message-ID | <oicq5j$329$1@dont-email.me> |
On 6/18/2017 9:49 PM, Stefan Ram wrote: > Newsgroups: comp.lang.java.programmer,comp.lang.c++ > > A default constructor is a constructor that misses something. > > In C++, it is a constructor that can be called with missing > arguments (no arguments). > > C++ 12.1p4: > > A default constructor for a class X is a constructor of > class X for which each parameter that is not a function > parameter pack has a default argument (including the > case of a constructor with no parameters). > > In Java, it is a constructor that is generated when an > explicit constructor declaration is missing. The generated > constructor just so happens to have no parameters, but > an explicitly declared constructor with no parameters is > not a default constructor, but replaces it: > > JLS8 13.4.12 > > Adding one or more constructor declarations to the > source code of such a class will prevent this default > constructor from being implicitly declared, effectively > deleting a constructor, unless one of the new > constructors also has no parameters, thus replacing the > default constructor. > > Summary (simplified): In C++, "default constructor" means > "any constructor that does not require an argument". > In Java, it means "the constructor that is generated if > the user does not declare any constructor". > > Newsgroups: comp.lang.java.programmer,comp.lang.c++ > Stefan is correct as usual, but for the sake of completeness: In Java, a constructor that takes no arguments is often called a "no-arg" constructor, while the constructor supplied by the compiler is known as the "default" constructor. Java's default constructor is a no-arg constructor. In C++, a compiler-generated constructor is called "auto-generated. Thus C++ has an auto-generated default constructor, while Java has a default no-arg constructor. Both are similar concepts. (Constructors in C++ can be more complicated then for Java, IMO. See for example <https://stackoverflow.com/questions/4943958/conditions-for-automatic-generation-of-default-copy-move-ctor-and-copy-move-assi#answer-38257488>.) -- Wayne
Back to top | Article view | comp.lang.java.programmer
csiph-web