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?