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用法相关推荐

  1. C++中的using的作用

    1.using 命名空间 C++为了减少全局类和变量之间的冲突,引入命名空间的概念,类和变量可以属于某个命名空间. namespace tesseract { class className { }; ...

  2. python sort函数时间复杂度_STL用法及其时间复杂度分析

    STL是C++语言中一个非常实用的代码库,叫做标准模板库,通常我们使用这个头文件即可导入STL.本文立足与C++,但是python其实也是大同小异. set set正如其名,表示的是一个集合,其分为两 ...

  3. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  4. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

  5. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  6. pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

  7. python yield 和 yield from用法总结

    #例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...

  8. tf.nn.embedding_lookup()的用法

    函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...

  9. OpenMP用法大全

    OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...

最新文章

  1. 谈钱太俗!难道开源软件只能讲道义?
  2. 数据结构-直接寻址表
  3. cannot open layout editor - how to fix error message
  4. Nginx(七):nginx原理解析
  5. Google I/O 2016到底讲了啥
  6. mybatis-plus 自定义UpdateWrapper(一)实现列自增
  7. Activiti7的进阶使用
  8. WPS文字常用快捷键大全
  9. 微软拼音输入法 2003 精选版 怎么用
  10. Git中pull reject和push reject
  11. lync2010服务器暂时无法使用,lync 2010音频服务无法启动问题
  12. PDF文件太大了,如何免费压缩变小?
  13. 前端技巧总结---持续更新
  14. 达人评测 r7 7730U和R5 7530U选哪个好 锐龙r77730U和R57530U对比
  15. 计算机网络-自顶向下方法-笔记【第3章-传输层】
  16. ssm实验室设备管理系统java,项目模板、毕业设计
  17. 北京注册公司,设立有限责任公司出资协议书
  18. 【CSS-定位和浮动】
  19. 从给定的大图中切出指定矩形区域的小图
  20. 《脚本》Scapy刺探星巴克无线网,记录顾客信息

热门文章

  1. 微信小程序中全局共享数据globalData的使用
  2. Iframe自适应高度
  3. 基于jsp+mysql+ssm社会保险养老系统-计算机毕业设计
  4. 用python实现Pure Pursuit控制算法
  5. 用python做股票因子分析_Python量化交易教程(3)因子选股与回测
  6. 过来人经验分享:英国留学过程中如何省钱?
  7. java dsl_我使用DSL编写SQL的一个Java实现
  8. 【笔记】vue父子组件数据双向绑定(v-model、prop.aync)
  9. 衡阳计算机网络学校,2020衡阳市信息网络工程学校简章
  10. pytorch __getitem__ 返回值