本文转载自https://blog.csdn.net/jirryzhang/article/details/82960080

#include <iostream>
using namespace std;
 
 
struct A{
    int x;
    A(int _x):x(_x){
        cout<<"A constructor, x="<<x<<endl;
    }
    A(const A& a):x(a.x){
        cout<<"A copy constructor, x="<<x<<endl;
    }
};
 
struct B{
    int x;
    double y;
    B(int _x,double _y):x(_x),y(_y){
        cout<<"B constructor, x="<<x<<", y="<<y<<endl;
    }
    B(const A& a):x(a.x),y(8.8){
        cout<<"B constructor X A, x="<<x<<", y="<<y<<endl;
    }
    B(const B& a):x(a.x),y(a.y){
        cout<<"B copy constructor, x="<<x<<", y="<<y<<endl;
    }
};
 
template <typename T,typename... Args>
T* Instance1(Args... args)
{
    return new T(args...);
}
 
template <typename T,typename... Args>
T* Instance2(Args&&... args)
{
    return new T(std::forward<Args>(args)...);
}
 
void test(){
    cout<<"------------"<<endl;
    A *a=Instance1<A>(1);
    delete a;
    cout<<"------------"<<endl;
    A t(2);
    a=Instance1<A>(t);
    delete a;
    cout<<"------------"<<endl;
    a=Instance2<A>(t);
    delete a;
    cout<<"------------"<<endl;
    cout<<"------------"<<endl;
    B *b=Instance1<B>(1,2.3);
    delete b;
    cout<<"------------"<<endl;
    b=Instance1<B>(t);
    delete b;
    cout<<"------------"<<endl;
    b=Instance2<B>(t);
    delete b;
 
}

C++11右值引用、完美转发foward、可变模板参数实例相关推荐

  1. 移动语义-右值引用-完美转发-万字长文让你一探究竟

    C++ 右值引用 block://6984617523950616580?from=docs_block&id=ce31003ceb5efb1f7a7c0a5fbe6cb60191627a38 ...

  2. C++11 右值引用、移动语义、完美转发、万能引用

    C++11 右值引用.移动语义.完美转发.引用折叠.万能引用 转自:http://c.biancheng.net/ C++中的左值和右值 右值引用可以从字面意思上理解,指的是以引用传递(而非值传递)的 ...

  3. C++11右值引用、移动语义、完美转发详解

    c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能.有点难理解,于是花时间整理一下自己的理解. 左值.右值 C++中所有的值都必然属于左值.右值二者之一.左值是指表达式结束后依然存在的 ...

  4. C++11 右值引用和移动语义

    C++11 右值引用和移动语义 右值引用 左值与右值 对象的返回形式缺陷 ★移动语义 右值引用引用左值(move) 正确使用move的一个例子 完美转发 转发: 不转发: 右值引用作用 右值引用 C+ ...

  5. 【C++】C++11 右值引用和移动语义

    文章目录 一.左值与左值引用 二.右值与右值引用 三.左值引用和右值引用的比较 四.右值引用的使用场景和意义 1.左值引用的短板 2.移动构造和移动赋值 3.STL 容器的变化 五.万能引用与完美转发 ...

  6. move std 函数 示例_C++11右值引用和std::move语句实例解析(推荐)

    右值引用(及其支持的Move语意和完美转发)是C++0x将要加入的最重大语言特性之一.从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题.从语言本身讲,它健全了C++中的引用类型 ...

  7. [C++11] 右值引用和移动语义

    c++11引入了右值引用和移动语义,通过避免无谓的复制,以提高程序的执行效率. 1.左值与右值 c++中的数值必属于左值或右值之一,通常有以下方法进行区分: 左值:在赋值语句左侧,右值:在赋值语句右侧 ...

  8. C++11右值引用和std::move语句实例解析

    关键字:C++11,右值引用,rvalue,std::move,VS 2015 OS:Windows 10 右值引用(及其支持的Move语意和完美转发)是C++0x加入的最重大语言特性之一.从实践角度 ...

  9. C++11——右值引用

    目录 前言 一.右值引用的概念 1.1 左值和右值的概念 1.2 引用和右值引用比较 二.右值引用的作用 2.1引用的缺陷 2.1 移动语义 2.2 右值引用的具体应用 2.3 对比引用总结 三.右值 ...

  10. 【C++】探讨std::move()作用,查到的《C++11右值引用和std::move语句实例解析》

    原文出自https://www.cnblogs.com/ldlchina/p/6608154.html 感谢原创作者,以下为原文. 右值引用(及其支持的Move语意和完美转发)是C++0x加入的最重大 ...

最新文章

  1. 计算机四级操作系统原理知识汇总,2015年全国计算机四级《操作系统原理》考试内容...
  2. python3 base64 长度补全
  3. HDOJ(HDU) 1977 Consecutive sum II(推导、、)
  4. 索尼将成立200亿日元基金 投资机器人、人工智能等新兴企业
  5. OS之进程管理 --- 死锁
  6. selenium调用js文件_selenium肿么调用执行这两个js函数
  7. 帕金森定律(Parkinson's Law)
  8. [转]2016年Web前端面试题目汇总
  9. 5日直播预告丨Oracle DBA的SQL编写技能提升宝典
  10. 静态成员变量.xml
  11. 题解【NOIP2013_火柴排序】— 问题与转化
  12. chrome 安装 gliffy 绘图插件以及使用
  13. 多元回归分析python实战-----对我国财政收入的多因素进行分析
  14. 对Ajax回调函数中返回错误信息的处理及常见情况整理
  15. python新年快乐代码_新年快乐! python实现绚烂的烟花绽放效果
  16. PPT打印预览无背景
  17. arptables实现ARP报文IPMAC绑定
  18. 一对一直播技术服务【推广】
  19. 主板、内存条、硬盘、显卡认识和选购
  20. 百度发布AI 2020年十大科技趋势

热门文章

  1. 以太坊不同客户端的定义和用途
  2. 怎么用python画sin函数图像_Python3使用Matplotlib 绘制精美的数学函数图形
  3. 第10章Linux实操篇-定时任务调度
  4. 【备战校招】阅文集团Java实习生笔试题
  5. 求帮忙看下最优带宽怎么求解(Nadaraya-Waston)
  6. 中兴高管调整:为什么是殷一民?
  7. unity3d实战项目——拯救大兵2:界面设计之自定义GUI皮肤
  8. sikuli环境搭建及使用
  9. 一文搞懂Java Lambda表达式
  10. 【OpenCV】-仿射变换