I’m reading this C++ open source code and I came to a constructor but I don’t get it ( basically because I don’t know C++ 😛 )
I understand C and Java very well.
TransparentObject::TransparentObject( int w, int x, int y, int z ) : _someMethod( 0 ), _someOtherMethod( 0 ), _someOtherOtherMethod( 0 ), _someMethodX( 0 ) { int bla; int bla; }
As far I can ‘deduce’ The first line only declares the construtor name, the ‘::’ sounds like ‘belongs to’ to me. And the code between {} is the constructor body it self.
I ‘think’ what’s after the paremeters and the first ‘{‘ are like methods default parameters or something, but I don’t find a reasonable explanation on the web. Most of the C++ constructors that I found in the examples are almost identical to those in Java.
I’m I right in my assumptions? ‘::’ is like belongs to, and the list after params and body are like ‘default args’ or something?
UPDATE: Thanks for the answers. May those be called methods? ( I guess no ) and what is the difference of call them within the constructor body
The most common case is this:
This will set
xandyto the values that are given in_xand_yin the constructor parameters. This is often the best way to construct any objects that are declared as data members.It is also possible that you were looking at constructor chaining:
In this instance, the class’s constructor will call the constructor of its base class and pass the values
xandy.To dissect the function even further:
The
::-operator is called the scope resolution operator. It basically just indicates thatTransparentObjectis a member ofTransparentObject. Secondly, you are correct in assuming that the body of the constructor occurs in the curly braces.There is much more information on this subject than I could possibly ever give you here. The most common area where you have to use initializer lists is when you’re initializing a reference or a
constas these variables must be given a value immediately upon creation.