C++11using用法
C++11中using关键字的主要作用是:为一个模板库定义一个别名。
下面列举出using的几种用法:
/*定义别名*/template<class T>using Tlist = std::list<T>;using Tlist = std::list<char>;Tlist listChar;//typedef void(*df)();using df = void(*)();/*使用外部构造*/using A::A;/*引用外部类型*/
using typename A;
1、用法一:引用命名空间
using namespace std;
2、用法二:alias的使用
using 还可以指定别名,比如using SO3d = SO3<double>; 那么它和typedef ,有什么区别?
可读性
我们使用typedef定义函数指针:typedef void (* FUN_) (int, int); 函数指针指向的函数返回值是void,输入参数是int, int型。
我们使用using 定义函数指针:using FUN_ = void(*)(int, int);
using的写法把别名的名字强制分离到了左边,而把别名指向的放在了右边,比较清晰
此外,using可以指定模板的别名,而typedef不行
/*假如我们定义一个类模板:*/
template<class _scale, int option>
class Person
{
public:_scale age;_scale name[option];
};template<class _T>
using myperson = Person<_T, 6>; // Ok//typedef Person<_T, 6> myperson; // failmyperson<int> p;
3、用法三:子类引用基类成员
假如子类私有继承父类,子类无法使用父类的成员(变量,函数等),但是使用using可以访问,code如下:
template<class _scale, int option>
class Person
{
public:_scale age;_scale height;_scale name[option];void myprint(void){cout << "age" << age << endl;}
};template<class _scale, int option>
class HeighPerson : private Person<_scale, option>
{
public:using Person<_scale, option>::age; // 使用using 之后变成publicusing Person<_scale, option>::myprint; // 使用using, myprint之后变成publicprotected:using Person<_scale, option>::height; //在本来不可访问的,使用using 之后变成protectedvoid test(void){cout << "age" << age << endl;}
};
注:此时也只可通过using访问基类的public、protected成员,private成员依旧不可访问;
C++11using用法相关推荐
- C++中的using的作用
1.using 命名空间 C++为了减少全局类和变量之间的冲突,引入命名空间的概念,类和变量可以属于某个命名空间. namespace tesseract { class className { }; ...
- python sort函数时间复杂度_STL用法及其时间复杂度分析
STL是C++语言中一个非常实用的代码库,叫做标准模板库,通常我们使用这个头文件即可导入STL.本文立足与C++,但是python其实也是大同小异. set set正如其名,表示的是一个集合,其分为两 ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Pandas_transform的用法
先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
- python yield 和 yield from用法总结
#例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...
- tf.nn.embedding_lookup()的用法
函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...
- OpenMP用法大全
OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...
最新文章
- 谈钱太俗!难道开源软件只能讲道义?
- 数据结构-直接寻址表
- cannot open layout editor - how to fix error message
- Nginx(七):nginx原理解析
- Google I/O 2016到底讲了啥
- mybatis-plus 自定义UpdateWrapper(一)实现列自增
- Activiti7的进阶使用
- WPS文字常用快捷键大全
- 微软拼音输入法 2003 精选版 怎么用
- Git中pull reject和push reject
- lync2010服务器暂时无法使用,lync 2010音频服务无法启动问题
- PDF文件太大了,如何免费压缩变小?
- 前端技巧总结---持续更新
- 达人评测 r7 7730U和R5 7530U选哪个好 锐龙r77730U和R57530U对比
- 计算机网络-自顶向下方法-笔记【第3章-传输层】
- ssm实验室设备管理系统java,项目模板、毕业设计
- 北京注册公司,设立有限责任公司出资协议书
- 【CSS-定位和浮动】
- 从给定的大图中切出指定矩形区域的小图
- 《脚本》Scapy刺探星巴克无线网,记录顾客信息
热门文章
- 微信小程序中全局共享数据globalData的使用
- Iframe自适应高度
- 基于jsp+mysql+ssm社会保险养老系统-计算机毕业设计
- 用python实现Pure Pursuit控制算法
- 用python做股票因子分析_Python量化交易教程(3)因子选股与回测
- 过来人经验分享:英国留学过程中如何省钱?
- java dsl_我使用DSL编写SQL的一个Java实现
- 【笔记】vue父子组件数据双向绑定(v-model、prop.aync)
- 衡阳计算机网络学校,2020衡阳市信息网络工程学校简章
- pytorch __getitem__ 返回值