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?