当前位置: 首页 > article >正文

C++11新特性之使用using(代替typedef)定义别名

1.介绍

        传统的C++使用typedef重定义一个类型存在一些限制,例如无法直接重定义一个模版。如下所示。

template <typename Val>
struct str_map
{
    typedef std::map<std::string, Val> type;
};

str_map<int>::type map1;

        需要添加额外的类来实现,显的有些繁琐,并且不利于代码的泛用。

因此在C++11中出现了可以重定义模版的语法。如下所示。

template <typename Val>
using str_map_t = std::map<std::string, Val>;

str_map_t<int> map1;

这里使用using定义别名,重定义的别名是str_map_t。与typedef相比,using是不是更加的简洁、好用。

2.使用语法

        (1)重定义普通类型

using uint_t = unsigned int;

        (2)重定义模版类型

template <typename Val>
using str_map_t = std::map<std::string, Val>;

通过观察可知,using的使用语法为:

        using  别名  =  原类型  

在普通类型上,typedef与using的效果相同,但定义语法略有区别。

typedef的使用语法为:

        typedef  原类型  别名     (类似于声明变量)

3.总结

优点:

        (1)using功能更加的全面。如重定义模版等。

        (2)using的语法比typedef更加的清晰。

注意事项:

        (1)using和typedef只是给类型重定义,不会创造新的类型。

        (2)using重定义的模版被称为模版别名。


http://www.kler.cn/a/525380.html

相关文章:

  • ping命令详解Type 8和0 或者Type 3
  • DeepSeek-R1本地部署笔记
  • 算法的时间复杂度
  • QT 通过ODBC连接数据库的好方法:
  • SpringCloud基础二(完结)
  • 【apt源】RK3588 平台ubuntu20.04更换apt源
  • CAPL与外部接口
  • ORA-04031 错误
  • 简要介绍C语言和c++的共有变量,以及c++特有的变量
  • 亚博microros小车-原生ubuntu支持系列:16 机器人状态估计
  • Windows安装Milvus
  • 四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)
  • JavaScript网页设计案例(任务管理器)
  • 芯片AI深度实战:基础篇之langchain
  • 不背单词快捷键(不背单词键盘快捷键)
  • 自制插件扩宽“文章区间“样式插件
  • JAVA学习-练习试用Java实现“使用Swing创建一个简单的窗口”
  • 【PySide6快速入门】qrc资源文件的使用
  • golang学习教程
  • Python NumPy(7):连接数组、分割数组、数组元素的添加与删除
  • pytorch使用SVM实现文本分类
  • 17、Spring MVC 框架:构建强大的 Java Web 应用程序
  • APL语言的正则表达式
  • Java创建项目准备工作
  • [答疑]DDD伪创新哪有资格和仿制药比
  • 系统思考—心智模式