Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #36687 > unrolled thread

Re: "default constructor"

Started byWayne <wayne@nospam.invalid>
First post2017-06-20 23:49 -0400
Last post2017-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.


Contents

  Re: "default constructor" Wayne <wayne@nospam.invalid> - 2017-06-20 23:49 -0400

#36687 — Re: "default constructor"

FromWayne <wayne@nospam.invalid>
Date2017-06-20 23:49 -0400
SubjectRe: "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

[toc] | [standalone]


Back to top | Article view | comp.lang.java.programmer


csiph-web