暂存一下。
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "NTree.h"
#include "logging.h"
#include <iostream>
template <typename T>
class base {
public:
struct node
{
T data;
node *parent;
std::vector<node*> 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 <typename T>
class middle :public base<T> {
public:
middle<T>() :base<T>()
{
Mes("middle 无参 构造函数");
}
middle<T>(base<T>::node *m):base<T>(m)
{
Mes("middle node 构造函数");
}
middle<T>(const middle &m) : base<T>(m)
{
Mes("middle middle 构造函数");
}
middle<T>(middle &&m) : base<T>(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<int>::node na, nb;
na.data = 1;
nb.data = 9;
middle<int> a;
middle<int> b(a);
// middle<int> &&c = move(b);
middle<int> c(move(b));
string lv1 = "string,";
ref(move(lv1));
string&& rv1 = move(lv1);
info << "rv1 = " << rv1 << endl;
Mes(info.str());
system("pause");
return 0;
}
=====================
网友评论