程序员小x大约 1 分钟

#include <string.h>
#include <iostream>
class Toy
{
public:
    Toy(const char* name)
    {
        name_ = new char[20];
        memset(name_, 0, 20);
        strcpy(name_, name);
    }

    ~Toy()
    {
        delete name_;
        name_ = nullptr;
    }

    Toy(Toy &t)
    {
        std::cout << "Toy(Toy &t)" << std::endl;
        name_ = new char[20];
        strcpy(t.name_, (const char*)name_);
    }

    Toy(Toy&& t){
        std::cout << "Toy(Toy &&t)" << std::endl;
        std::cout <<"move constrctor" << std::endl;
        name_ = t.name_;
        t.name_ = nullptr;
    }

    Toy& operator=(Toy &t){
        std::cout << "Toy(Toy &t)" << std::endl;
        strcpy(t.name_, (const char*)name_);
        return *this;
    }

    Toy& operator=(Toy &&t){
        std::cout << "Toy& operator=(Toy &&t)" << std::endl;
        name_ = t.name_;
        t.name_ = nullptr;
        return *this;
    }
private:
    char* name_{nullptr};
};

void process(Toy t)
{

}

int main()
{
    Toy t("baby");
    process(t);
    process(std::move(t));
}
#include <string.h>
#include <iostream>
class Toy
{
public:
    Toy(const char* name)
    {
        name_ = new char[20];
        memset(name_, 0, 20);
        strcpy(name_, name);
    }

    ~Toy()
    {
        delete name_;
        name_ = nullptr;
    }

    Toy(Toy &t)
    {
        std::cout << "Toy(Toy &t)" << std::endl;
        name_ = new char[20];
        strcpy(t.name_, (const char*)name_);
    }

    Toy(Toy&& t){
        std::cout << "Toy(Toy &&t)" << std::endl;
        std::cout <<"move constrctor" << std::endl;
        name_ = t.name_;
        t.name_ = nullptr;
    }

    Toy& operator=(Toy &t){
        std::cout << "Toy(Toy &t)" << std::endl;
        strcpy(t.name_, (const char*)name_);
        return *this;
    }

    Toy& operator=(Toy &&t){
        std::cout << "Toy& operator=(Toy &&t)" << std::endl;
        name_ = t.name_;
        t.name_ = nullptr;
        return *this;
    }
private:
    char* name_{nullptr};
};

void process(Toy& t)
{

}

int main()
{
    Toy t("baby");
    process(t);
}
#include <string.h>
#include <iostream>
class Toy
{
public:
    Toy(const char* name)
    {
        name_ = new char[20];
        memset(name_, 0, 20);
        strcpy(name_, name);
    }

    ~Toy()
    {
        delete name_;
        name_ = nullptr;
    }

    Toy(Toy &t)
    {
        std::cout << "Toy(Toy &t)" << std::endl;
        name_ = new char[20];
        strcpy(t.name_, (const char*)name_);
    }

    Toy(Toy&& t){
        std::cout << "Toy(Toy &&t)" << std::endl;
        std::cout <<"move constrctor" << std::endl;
        name_ = t.name_;
        t.name_ = nullptr;
    }

    Toy& operator=(Toy &t){
        std::cout << "Toy(Toy &t)" << std::endl;
        strcpy(t.name_, (const char*)name_);
        return *this;
    }

    Toy& operator=(Toy &&t){
        std::cout << "Toy& operator=(Toy &&t)" << std::endl;
        name_ = t.name_;
        t.name_ = nullptr;
        return *this;
    }
private:
    char* name_{nullptr};
};

void process(Toy&& t)
{

}

int main()
{
    Toy t("baby");
    process(std::move(t));
}
Loading...