+ 35

Question for C++ users!

What is the difference, if any, between the following? (T stands for any class type.) T t; T t(); T t(u); T t = u; Please use KIS principle (removed last S)

20th Mar 2017, 4:43 PM
Ram chandra Giri
Ram chandra Giri - avatar
5 Answers
+ 16
Top two are default constructors, 3rd is a constructor that takes arguments and the bottom one is a copy constructor
20th Mar 2017, 4:51 PM
Jafca
Jafca - avatar
+ 35
T t; default initialization T t(); function declaration T t(u); direct initialization T t = u; copy initialization Thanks @hdo and @jafca.
20th Mar 2017, 5:15 PM
Ram chandra Giri
Ram chandra Giri - avatar
+ 4
1.) T t; create an object t and default constructor called. 2.) T t(); same as above; 3.) T t(u); create object t with passing a parameter u, appropriate constructor will be called. 4.) T t= u; create an object t with copy constructor called and copy constructor copies appropriate data members in object t. Note:- here u should be an object of type class T or the base class of class T if inheritance is used. although many other situations be possible here.
23rd Mar 2017, 3:06 AM
Rax
Rax - avatar
+ 3
1 and 2 are the same. 3 is constructor with arguments. 4 is copy constructor.
20th Mar 2017, 4:48 PM
hdo
hdo - avatar
+ 3
About the 2nd statement, it depends on the context where it's in. If it's in a class declaration or in global context (outside any function or class definitions) then it's function declaration. Otherwise it's a statement that instantiates an object of class T using default constructor.
20th Mar 2017, 6:14 PM
hdo
hdo - avatar