zoukankan      html  css  js  c++  java
  • 完美转发

    完美转发

    #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

  • 相关阅读:
    yii 引入文件
    CodeForces 621C Wet Shark and Flowers
    面试题题解
    POJ 2251 Dungeon Master
    HDU 5935 Car(模拟)
    HDU 5938 Four Operations(暴力枚举)
    CodeForces 722C Destroying Array(并查集)
    HDU 5547 Sudoku(dfs)
    HDU 5583 Kingdom of Black and White(模拟)
    HDU 5512 Pagodas(等差数列)
  • 原文地址:https://www.cnblogs.com/yunqie/p/5958143.html
Copyright © 2011-2022 走看看