移动构造函数

暂存一下。

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "NTree.h"
#include "logging.h"
#include 

template 
class base {
public:
    struct node
    {
        T data;
        node *parent;
        std::vector children;
    };
    base():_root(nullptr)
    {
        Mes("base 无参 构造函数");
    }
    base(node *root):_root(root)
    {
        Mes("base node 构造函数");
    }
    base(const base &b):_root(b._root)
    {
        Mes("base base 构造函数");
    }
    base(base &&b):_root(std::move(b._root))
    {
        Mes("base move 构造函数");
    }


private:
    node *_root;
};

template 
class middle :public base {
public:
    middle() :base()
    {
        Mes("middle 无参 构造函数");
    }
    middle(base::node *m):base(m)
    {
        Mes("middle node 构造函数");
    }
    middle(const middle &m) : base(m)
    {
        Mes("middle middle 构造函数");
    }
    middle(middle &&m) : base(move(m))
    {
        Mes("middle move 构造函数");
    }
};

using namespace std;

static float gl = 1.1111f;

void ref(string &str)
{
    Mes("左值");
}

void ref(string &&str)
{
    Mes("右值");
}

int main()
{
    middle::node na, nb;
    na.data = 1;
    nb.data = 9;

    middle a;

    middle b(a);

    // middle &&c = move(b);

    middle c(move(b));

    string lv1 = "string,";

    ref(move(lv1));
    string&& rv1 = move(lv1);

    info << "rv1 = " << rv1 << endl;
    Mes(info.str());

    system("pause");
    return 0;
}

=====================

你可能感兴趣的:(移动构造函数)