Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Constructor (object-oriented programming)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Types == === Parameterized constructors === Constructors that can take at least one argument are termed as parameterized constructors. When an object is declared in a parameterized constructor, the initial values have to be passed as arguments to the constructor function. The normal way of object declaration may not work. The constructors can be called explicitly or implicitly. The method of calling the constructor implicitly is also called the shorthand method. <syntaxhighlight lang="cpp"> class Example { public: Example(); Example(int a, int b); // Parameterized constructor. private: int x_; int y_; }; Example::Example() = default; Example::Example(int x, int y) : x_(x), y_(y) {} </syntaxhighlight> <syntaxhighlight lang="cpp"> Example e = Example(0, 50); // Explicit call. Example e2(0, 50); // Implicit call. </syntaxhighlight> === Default constructors === If the programmer does not supply a constructor for an instantiable class, Java compiler inserts a [[default constructor]] into your code on your behalf. This constructor is known as default constructor. You would not find it in your source code (the java file) as it would be inserted into the code during compilation and exists in .class file. The behavior of the default constructor is language dependent. It may initialize data members to zero or other same values, or it may do nothing at all. In Java, a "default constructor" refer to a nullary constructor that is automatically generated by the compiler if no constructors have been defined for the class or in the absence of any programmer-defined constructors (e.g. in Java, the default constructor implicitly calls the [[Superclass (computer science)|superclass]]'s [[nullary]] constructor, then executes an empty body). All fields are left at their initial value of 0 (integer types), 0.0 (floating-point types), false (boolean type), or null (reference types)... <syntaxhighlight lang="cpp"> #include <iostream> class Student { public: Student(int a = 0, int b = 0); // Default constructor. int a; int b; }; </syntaxhighlight> === Copy constructors === {{see also|Copy constructor (C++)}} Like C++, Java also supports "Copy Constructor". But, unlike C++, Java doesn't create a default copy constructor if you don't write your own. Copy constructors define the actions performed by the compiler when copying class objects. A Copy constructor has one formal parameter that is the type of the class (the parameter may be a reference to an object). It is used to create a copy of an existing object of the same class. Even though both classes are the same, it counts as a conversion constructor. While copy constructors are usually abbreviated copy ctor or cctor, they have nothing to do with class constructors used in [[.NET]] using the same abbreviation. === Conversion constructors === Conversion constructors provide a means for a compiler to implicitly create an object belonging to one class based on an object of a different type. These constructors are usually invoked implicitly to convert arguments or operands to an appropriate type, but they may also be called explicitly. === Move constructors === In C++, [[move constructor (C++)|move constructors]] take an Rvalue reference to an object of the class, and are used to implement ownership transfer of the parameter object's resources.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)