你能解释一下为什么,在下面的代码中,
#include <iostream>
#include <variant>
#include <string>
class MySecondType {
public:
MySecondType() { std::cout << "Constructeur par défaut de MySecondType\n"; }
MySecondType(const MySecondType&) // Constructeur par copie
{std::cout<< "Constructeur par copie de MySecondType\n";}
MySecondType(MySecondType&&) noexcept//Constructeur par déplacement
{
std::cout << "COnstructeur par déplacement de MySecondType\n";
}
MySecondType& operator=(MySecondType&&) noexcept
{
std::cout << "Opérateur d'affection par déplacement\n";
return *this;
}
MySecondType& operator=(MySecondType&)
{
std::cout << "Opérateur d'affection par copie\n";
return *this;
}
~MySecondType() {
std::cout << "Destructeur de MySecondType\n";
}
};
int main() {
MySecondType e;
e= MySecondType() ;
return 0;
}
我有我等待的结果:
MySecondType e;
e= MySecondType() ;
但我没有,如果我有:
MySecondType e = MySecondType() ;
我期望这条线:
MySecondType e = MySecondType() ;
会调用移动构造函数(在默认构造函数之后),但它不会调用它。它只使用默认构造函数创建一个对象,仅此而已。
你能解释一下为什么吗?
谢谢