(图来自互联网)
#include <iostream>
class Someclass
{
private:
char * s;
public:// 如果手动提供了析构函数,复制构造函数,复制赋值运算符,编译器不自动提供移动构造函数和移动赋值运算符;
// 如果手动提供了移动构造函数或移动赋值运算符,编译器奖不会自动提供复制构造函数和复制赋值运算符
Someclass();
Someclass(const char * _s);
Someclass(const Someclass & _sc);
Someclass(Someclass && _sc);
Someclass & operator=(const Someclass & _sc);
Someclass & operator=(Someclass && _sc);
~Someclass();
public:
void Print() const;
};
Someclass::Someclass() : s(nullptr)
{
}
Someclass::Someclass(const Someclass & _sc)
{
std::cout << "copy" << std::endl;
s = (char *)malloc(sizeof(char) * (strlen(_sc.s) + 1));
strcpy(s, _sc.s);
}
Someclass::Someclass(Someclass && _sc)
{
std::cout << "copy&&" << std::endl;
s = _sc.s;
_sc.s = nullptr;
}
Some