• 完美转发


    完美转发

    #include <iostream>
    #include <string>
    #include <utility>
    
    using std::cout;
    using std::endl;
    using std::string;
    
    class  Name
    {
    public:
        Name(const string & aName) :name{aName}
        {
            cout << "Lvalue Name constructor." << endl;
        }
    
        Name(string && aName) :name{ std::move(aName) }
        {
            cout << "Rvalue Name constructor." << endl;
        }
        
        const string & GetNmae()const
        {
            return name;
        }
    
    private:
        string name;
    
    };
    
    
    class Person
    {
    public:
        template<typename T1,typename T2>
        Person(T1 && first, T2 && second) :firstname{ std::forward<T1>(first) }, seondname{ std::forward<T2>(second) }
        {
            cout << "-------------------" << endl;
        }
    
        string getName()const
        {
            return firstname.GetNmae() + " " + seondname.GetNmae();
        }
    
    private:
        Name firstname;
        Name seondname;
    };
    
    int main()
    {
        Person me{ string{"Ivor"},string{"Horton"} };
        cout << me.getName() << endl << endl;
    
        string first{"Fred"};
        string second{"Fernackerpan"};
        Person other{first,second};
        cout << other.getName()<< endl << endl;
    
        Person brother{ first,string{"Bloggs"} };
        cout << brother.getName() << endl << endl;
    
        Person another{"Richard","Horton"};
        cout << another.getName() << endl;
    }

    输出结果:

    Rvalue Name constructor.
    Rvalue Name constructor.
    -------------------
    Ivor Horton

    Lvalue Name constructor.
    Lvalue Name constructor.
    -------------------
    Fred Fernackerpan

    Lvalue Name constructor.
    Rvalue Name constructor.
    -------------------
    Fred Bloggs

    Rvalue Name constructor.
    Rvalue Name constructor.
    -------------------
    Richard Horton

  • 相关阅读:
    标签平滑Label Smoothing
    py 中传参时**符号学习
    RoBERTa模型学习
    获取bert所有隐层的输出
    json.dumps||ensure_ascii
    nn.LSTM输入、输出、参数及pad
    py中的heapq操作
    fastnlp中的CRF补齐的padding?
    P3393 逃离僵尸岛 最短路dijkstra
    P2057 [SHOI2007]善意的投票 最小割
  • 原文地址:https://www.cnblogs.com/yunqie/p/5958143.html
Copyright © 2020-2023  润新知