I have the following class as an example:
#include <iostream>
class MyClass {
private:
double value{0};
public:
explicit MyClass(double value) : value(value){};
MyClass(const MyClass&) = delete;
MyClass(MyClass&&) = delete;
MyClass& operator=(MyClass&&) = delete;
double getValue(){return value;}
};
int main(void){
MyClass c1(100.0); // Version 1
MyClass c2 = MyClass(200.0); // Version 2
std::cout << c1.getValue() << std::endl;
std::cout << c2.getValue() << std::endl;
}
I've learned that // Version 1
of // Version 2
is preferable because // Version 2
calls the copy constructor.
That's why I deleted the copy constructor and still // Version 2
works. Thus, no copy constructor is called.
Which operator of MyClass is called by // Version 2
?
Why is // Version 1
preferable to // Version 2
?