What is the difference between
MyClass mc = MyClass();
and
MyClass mc;
in C++?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The first invokes copy constructor, with temporary object as parameter –
MyClass()creates temporary.The second invokes default constructor.
In reality, they are, in most cases, optimized out to the same code, but that’s the semantical difference.
As Negal mentioned, the case is a bit different with POD types; when “MyClass” is POD, the second snippet will not value-initialize
mc, whereas first will.