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

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 别名 = ...

相关文章:

  • 高等数学同步测试卷 同济7版 试卷部分 上 做题记录 上册期中同步测试卷 B卷
  • c++ 类和动态内存分配
  • Java基础语法
  • 本地搭建MQTT服务器并进行设备控制(ESP32+MicroPython)
  • Qt6离线安装过程
  • HarmonyOS 笔记
  • 9.QT-显示类控件|Label|显示不同格式的文本|显示图片|文本对齐|自动换行|缩进|边距|设置伙伴(C++)
  • 2025.4.20总结
  • 基于尚硅谷FreeRTOS视频笔记——11—RTOS获取源码及源码简介
  • STM32基础教程——串口收发
  • YOLOv11改进——基于注意力机制和密集小目标增强型EVA模块的设计与实现
  • QML中的JSON 处理
  • VMware虚拟机走主机代理上网
  • SAP IAS云产品简介
  • 《猎豹夕阳》
  • 机器学习(神经网络基础篇)——个人理解篇6(概念+代码)———参数优化篇
  • 【AI图像创作变现】02工具推荐与差异化对比
  • Vue3中provide和inject数据修改规则
  • Kubernetes相关的名词解释API Server组件(9)
  • Python中的短路运算
  • 民生访谈|“AI推广是把学生教聪明还是教笨了?这个问题必须回答好”
  • 又有多地推进产科整合
  • 申花迎来中超三连胜,这一次终于零封对手了
  • “80后”辽宁石油化工大学副校长杨占旭已任阜新市领导
  • 杭州挂牌3宗住宅用地,起始总价约30.04亿元
  • 日薪100元散发“引流小卡片”,上海浦东警方抓获2名违法人员