美文网首页
移动构造函数

移动构造函数

作者: 皿卜土 | 来源:发表于2019-12-05 11:03 被阅读0次

暂存一下。

// 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;
}

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

相关文章

  • c++11 拷贝控制

    拷贝控制操作包括,拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符,析构函数。拷贝和移动构造函数定义了用...

  • 18/3

    1.特殊成员函数(6个):默认构造函数、复制构造函数、复制赋值运算符和析构函数、移动构造函数、移动赋值运算符 这些...

  • C++中为什么move construct需要加noexcept

    C++ 11中增加了名为移动构造函数的构造函数类型。通过使用移动构造函数,我们可以在进行对象复制时直接“窃取”拷贝...

  • 2023-01-18 C++实现string类

    实现string类,用于学习 拷贝构造函数/拷贝赋值运算符/移动构造函数/移动赋值运算符

  • 移动构造函数

    暂存一下。 =====================

  • 移动构造函数

    #include #include #include #include #include #in...

  • C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制

    在C++中,有三大函数复制控制(复制构造函数,赋值操作符,析构函数),而在C++11中,加入了移动构造函数,移动赋...

  • C++拷贝控制

    前言 C++通过在类中定义几个成员函数来控制的对象的拷贝,移动,赋值和销毁,分别如下: 拷贝构造函数和移动构造函数...

  • 拷贝构造函数和移动构造函数

    C++11之前,对象的拷贝控制由三个函数决定:拷贝构造函数(Copy Constructor)、拷贝赋值运算符(C...

  • 拷贝构造函数和移动构造函数

    C++ Primer 里讲拷贝控制和资源管理的时候,分了两小节,分别叫行为像值的类和行为像指针的类。 行为像值的类...

网友评论

      本文标题:移动构造函数

      本文链接:https://www.haomeiwen.com/subject/zskdgctx.html