C++11右值引用、完美转发foward、可变模板参数实例
本文转载自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、可变模板参数实例相关推荐
- 移动语义-右值引用-完美转发-万字长文让你一探究竟
C++ 右值引用 block://6984617523950616580?from=docs_block&id=ce31003ceb5efb1f7a7c0a5fbe6cb60191627a38 ...
- C++11 右值引用、移动语义、完美转发、万能引用
C++11 右值引用.移动语义.完美转发.引用折叠.万能引用 转自:http://c.biancheng.net/ C++中的左值和右值 右值引用可以从字面意思上理解,指的是以引用传递(而非值传递)的 ...
- C++11右值引用、移动语义、完美转发详解
c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能.有点难理解,于是花时间整理一下自己的理解. 左值.右值 C++中所有的值都必然属于左值.右值二者之一.左值是指表达式结束后依然存在的 ...
- C++11 右值引用和移动语义
C++11 右值引用和移动语义 右值引用 左值与右值 对象的返回形式缺陷 ★移动语义 右值引用引用左值(move) 正确使用move的一个例子 完美转发 转发: 不转发: 右值引用作用 右值引用 C+ ...
- 【C++】C++11 右值引用和移动语义
文章目录 一.左值与左值引用 二.右值与右值引用 三.左值引用和右值引用的比较 四.右值引用的使用场景和意义 1.左值引用的短板 2.移动构造和移动赋值 3.STL 容器的变化 五.万能引用与完美转发 ...
- move std 函数 示例_C++11右值引用和std::move语句实例解析(推荐)
右值引用(及其支持的Move语意和完美转发)是C++0x将要加入的最重大语言特性之一.从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题.从语言本身讲,它健全了C++中的引用类型 ...
- [C++11] 右值引用和移动语义
c++11引入了右值引用和移动语义,通过避免无谓的复制,以提高程序的执行效率. 1.左值与右值 c++中的数值必属于左值或右值之一,通常有以下方法进行区分: 左值:在赋值语句左侧,右值:在赋值语句右侧 ...
- C++11右值引用和std::move语句实例解析
关键字:C++11,右值引用,rvalue,std::move,VS 2015 OS:Windows 10 右值引用(及其支持的Move语意和完美转发)是C++0x加入的最重大语言特性之一.从实践角度 ...
- C++11——右值引用
目录 前言 一.右值引用的概念 1.1 左值和右值的概念 1.2 引用和右值引用比较 二.右值引用的作用 2.1引用的缺陷 2.1 移动语义 2.2 右值引用的具体应用 2.3 对比引用总结 三.右值 ...
- 【C++】探讨std::move()作用,查到的《C++11右值引用和std::move语句实例解析》
原文出自https://www.cnblogs.com/ldlchina/p/6608154.html 感谢原创作者,以下为原文. 右值引用(及其支持的Move语意和完美转发)是C++0x加入的最重大 ...
最新文章
- 计算机四级操作系统原理知识汇总,2015年全国计算机四级《操作系统原理》考试内容...
- python3 base64 长度补全
- HDOJ(HDU) 1977 Consecutive sum II(推导、、)
- 索尼将成立200亿日元基金 投资机器人、人工智能等新兴企业
- OS之进程管理 --- 死锁
- selenium调用js文件_selenium肿么调用执行这两个js函数
- 帕金森定律(Parkinson's Law)
- [转]2016年Web前端面试题目汇总
- 5日直播预告丨Oracle DBA的SQL编写技能提升宝典
- 静态成员变量.xml
- 题解【NOIP2013_火柴排序】— 问题与转化
- chrome 安装 gliffy 绘图插件以及使用
- 多元回归分析python实战-----对我国财政收入的多因素进行分析
- 对Ajax回调函数中返回错误信息的处理及常见情况整理
- python新年快乐代码_新年快乐! python实现绚烂的烟花绽放效果
- PPT打印预览无背景
- arptables实现ARP报文IPMAC绑定
- 一对一直播技术服务【推广】
- 主板、内存条、硬盘、显卡认识和选购
- 百度发布AI 2020年十大科技趋势