码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • CPP 新语法规则笔记


            时隔多年又开始拾起CPP 开始使用,以前一直用的C++98,而今 C++20都已经出来了。为了方便自己查阅新语法规则,所以将自己遇到的CPP语法规则归纳总结方便查阅。

    一、数据类型

    二、类

            2.1 类成员属性,可以再申明时指定默认值

    1. class Test
    2. {
    3. private:
    4. int m_a = 0;
    5. };

    三、模板

     3.1 尾置返回类型

            用于在模板函数中由于模板参数不定我们没办法推断函数返回类型时使用,由于尾置返回的类型由 decltype() 得到,有时候我们需要这这些类型做些处理才是我们想要的,那么可以配合内置函数 5.1 使用 

    1. //返回迭代器引用
    2. template<typename It>
    3. auto func(It beg) -> decltype(*beg)
    4. {
    5. return *beg;
    6. }
    7. /*
    8. 通过尾置返回类型的定义,我们可以通过 decltype 分析得到*beg 类型
    9. 为了丰富尾置返回,还内置了一系列的标准款函数
    10. */

    3.2 不定模板参数

            用于定义参数不定的模板

    1. template<typename ...ARGS>
    2. void foo(const ARGS& ... args){}
    3. //实例调用如下
    4. foo(1, true, std::string("test")) ///会自动推导出 foo(int, bool, std::string)的函数

    3.3 sizeof...(args) 

            用于获得不定参数模板类获得参数数量

    1. template<typename ...Args>
    2. void func(const Args&... args)
    3. {
    4. cout << sizeof...(Args) << endl; // 类型参数得的数量
    5. count << sizeof...(args) << endl; //函数参数的数量
    6. }

    四、语法规则

    4.1  auto 类型

            用于编译阶段能自动推导出类型的 动态类型申明。有时候我们赋值操作时申明类型需要去看我们赋值对象的类型然后写对应类型。auto 申明的变量必须赋值,否则无法编译时就推导出类型了。

    1. int a = 1, b = 2;
    2. auto c = a + b; // c 将推导为 int

    4.2 delctype 函数

            在运行阶段动态推导类型。

    1. double a = 10.123;
    2. int b = 20;
    3. decltype(a+b) c; //这里和auto不一样,不需要立即赋值,但
    4. c = a + b;

    五、新库

    5.1 模板类型处理

    remove_reference 返回去掉T 的引用属性的普通类型   X&/X&& ->  X

    add_const 返回T 类型增加 const 修饰变成常量类型   X ->> const X

    add_lvalue_reference  返回T 对应的 左值引用类型    X -> X&

    add_rvalue_reference 返回T 对应的右值引用类型     X -> X&&

    remove_pointer 去掉T的指针修饰,变成对应的值类型   X* -> X

    add_pointer 给T增加指针修饰,变成T类型的指针类型  X -> X*

    make_signed 将无符号类型,变成有符号类型  unsigned X -> X

    make_unsigned 将有符号类型变成无符号类型  signed X -> unsigned X

    remove_extent  去掉一维数组修饰  X[n] -> X      

    remove_all_extentx  去掉所有维度数组修饰  X[n1][n2] -> X

  • 相关阅读:
    一夜爆火的《羊了个羊》,开发竟这么简单!
    全球电子商务交易预计将在2022年假日季增长15%,消费者情绪乐观
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    腾讯云2023年双十一活动时间、活动入口、活动内容详细解读
    Android 12(S) 图像显示系统 - HWC HAL 初始化与调用流程
    spring的ThreadPoolTaskExecutor装饰器传递调用线程信息给线程池中的线程
    电脑桌面怎样设置闹钟提醒?电脑上定闹钟的方法
    AI 与大模型引新安全威胁?亚马逊云科技与领创集团的探索和实践
    3.10 haas506 2.0开发教程-example-TFT
    检查原生 JavaScript 函数是否被覆盖
  • 原文地址:https://blog.csdn.net/xzben/article/details/126078483
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号