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

using用法整理

using 的极简新手教程,用最直白的语言和代码解释:

美图美图


一、核心作用:给类型起别名

目的:让复杂类型名变短、变好记。
例子

// 原名:std::vector<std::string>  
// 起个别名就叫 StringList
using StringList = std::vector<std::string>;// 使用
StringList names = {"Alice", "Bob"};

二、基础用法

1. 给简单类型起别名
using Age = int;       // 把 int 叫 Age
Age myAge = 25;
2. 给复杂类型起别名
using Matrix = std::vector<std::vector<double>>;  // 二维数组
Matrix data = {{1.1, 2.2}, {3.3, 4.4}};
3. 给函数指针起别名(新手难点!)
// 原函数类型:void(*)(int),指向参数为int、返回void的函数
using Callback = void(*)(int);  // 起个别名叫 Callback// 使用
void print(int x) { std::cout << x; }
Callback func = print;  // func 就是函数指针
func(10);  // 调用 print(10)

三、using vs typedef(老方法)

功能相同,但 using 更直观!

// typedef 写法
typedef int Age;
typedef void(*Callback)(int);// using 写法(推荐!)
using Age = int;
using Callback = void(*)(int);

using 独有的超能力:给模板类型起别名

// 定义一个模板别名:任意类型的 pair
template<typename T>
using Pair = std::pair<T, T>;// 使用
Pair<int> point(1, 2);  // 等价于 std::pair<int, int>

四、实际应用场景

  1. 简化长类型名

    using FilePath = std::filesystem::path;
    FilePath p = "data.txt";
    
  • 统一跨平台代码

    #ifdef _WIN32
    using Socket = SOCKET;  // Windows 的 Socket 类型
    #else
    using Socket = int;     // Linux 的 Socket 类型
    #endif
    
  • 隐藏复杂实现

    // 头文件中声明别名
    using UserData = SomeComplicatedTemplateClass<int, std::string>;
    

五、一句话总结

using = 给类型起外号,让代码更干净!

  • 简单类型:using 别名 = 原名;
  • 函数指针:using 别名 = 返回类型(*)(参数列表);
  • 模板类型:template<typename T> using 别名 = ...
http://www.xdnf.cn/news/792.html

相关文章:

  • 海拔与大气压关系,大气压单位,气压传感器对比
  • RV1126网络环境TFTPNFS搭建(三)
  • 《Learning Langchain》阅读笔记4-基于 Gemini 的 Langchain:组装 LLM 应用的多个部分
  • 继承(2):
  • C语言基础
  • React 文章 分页
  • LACP协议解析
  • Python变量全解析:从基础到高级的命名规则与数据类型指南
  • 数据结构——栈
  • 20. git diff
  • PTA | 堆中的路径
  • 硬件工程师笔记——电子器件汇总大全
  • 计算机视觉与深度学习 | LSTM原理,公式,代码,应用
  • 选择一个靠谱的小程序开发服务商要考虑哪些方面
  • 数字孪生废气处理工艺流程
  • NFS服务共享和安装命令的补充
  • 从外网访问局域网服务器的方法
  • VMware虚拟机走主机代理上网
  • MindSpore GPU 版本安装教程
  • SQL注入 01
  • aws(学习笔记第三十九课) iot-core
  • JavaScript 性能优化
  • 【Java面试系列】Spring Cloud微服务架构中的分布式事务解决方案与Seata实现原理详解 - 3-5年Java开发必备知识
  • 小刚说C语言刷题——1049 汉译英
  • leetcode 1143. Longest Common Subsequence
  • 利用OLED打印调试信息: 控制PC13指示灯点灯的实验
  • Kubernetes相关的名词解释Dashboard界面(6)
  • CentOS stream 中部署Zabbix RPM软件包公钥验证错误
  • Java中订阅消费模式(发布-订阅模式)和观察者模式的区别
  • 进程管理,关闭进程