C++11 非常方便的特性

2023-05-16

文章目录

      • C++11
        • 一、nullptr
          • 1.含义
          • 2.作用
          • 3.NULL存在的问题
        • 二、auto
          • 1.含义
          • 2.限制
          • 3.使用场景
        • 三、lambda
          • 1.含义
          • 2.优点
          • 3.用法
        • 四、基于范围的for循环
          • 1.作用
          • 2.用法
          • 3.循环内更改数组

C++11

一、nullptr

1.含义

表示空指针

2.作用

解决NULL在函数重载时的歧义性

//c++中将NULL定义为整数0,一个指针的值为0,认为是空指针
//c语言中NULL为void类型的指针

#ifndef NULL
#ifdef _cpluscplus    
#define NULL 0              
#else
#define NULL ((void*)0)     
#endif
#endif
3.NULL存在的问题
void fun(int i){};
void fun(char *p){};

fun(NULL);      //C++中会调用第一个,认为是零
fun(nullptr);   //调用第二个

&nbsp

二、auto

1.含义

类型声明的占位符,会自定推导类型。但不能滥用,多了以后代码可读性差

int x = 0;
auto *a = &x;  //a -> int*  auto推导为int
auto b = &x;   //b -> int*  auto推导为int*
2.限制
  • 不能用于函数参数
    在这里插入图片描述

  • 不能用于非静态变量
    在这里插入图片描述

  • 不能定义数组
    在这里插入图片描述

  • 不能推导模板参数
    在这里插入图片描述

3.使用场景

(1)遍历容器的时候

QMap<int, int> resultMap;
for(auto it = resultMap.begin(); it != resultMap.end(); it++) {
    //do something
}

(2)不知道定义什么类型的时候
在这里插入图片描述

三、lambda

1.含义

简洁的函数,需要一个函数,但又不想命名的情况

2.优点
  • 不需要额外在写一个函数或者函数对象,避免了代码膨胀和功能分散。
  • 好的可读性和可维护性
3.用法
connect(ui->pushButton, &QPushButton::clicked, this, [=]() {
        qDebug() << "do some things";
});

四、基于范围的for循环

1.作用

简化对数组元素的遍历

2.用法
int arr[] = {4, 5, 6, 7};
for(auto x : arr) {
    qDebug() << x; 
}

注意:本例的 x 变量相当于传值参数。在循环内部更改 x 不会更改数组。但如果用 & 将 x 定义成传引用,对 x 的修改就会反映到数组中

3.循环内更改数组
int arr[] = {4, 5, 6, 7};
for(auto &x : arr) {
	x++;
}

值变为了5, 6, 7, 8

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++11 非常方便的特性 的相关文章

  • QT 复制、粘贴系统剪贴板

    一 复制 可以复制文字 图片到系统剪贴板 xff0c 图片最好将QImage格式复制到剪贴板 xff0c QPixmap要比QImage慢 xff0c 因为QPixmap需要首先转换为QImage格式 QClipboard span cla
  • QT 最常用字符串操作

    文章目录 96 96 QString 96 96 一 查找字符串位置二 截取指定位置的字符串三 判断字符串是否含有空字符四 判断字符串是否为空值五 指定位置插入字符串六 判断是否以某个字符串开始或结尾七 删除空字符八 排序字符串九 切割字符
  • QT 计算字符串、文件md5值

    一 计算字符串md5值 xff08 1 xff09 QCryptographicHash xff0c 提供一种生成加密散列的方法 xff0c Hash叫作散列表 xff0c 也叫作哈希 xff08 2 xff09 当前支持MD4 MD5 S
  • Ubuntu系统装上了以后应该干什么?

    我列出一个Linux Ubuntu装机单 xff1a 可以直接在桌面上新建文本文档 xff0c 复制粘贴我的装机命令单 xff0c 然后文本文档后缀改成sh xff0c 再在属性里设置 允许以程序执行文件 xff0c 就可以了 装机单 xf
  • QT 创建、修改桌面快捷方式,固定任务栏快捷方式

    一 获取系统文件路径 我们用到DesktopLocation和AppDataLocation 二 创建与修改快捷方式路径 修改可以直接将创建的快捷方式覆盖到指定的路径中即可 xff08 1 xff09 桌面快捷方式 QString desk
  • QT UTF-8转GBK编码

    在Qt5中使用Unicode来存储 操作字符串 xff0c windows下是GBK编码 UTF 8 转 GBK QString appLink span class token operator 61 span span class to
  • QT 删除一周前的日志

    1 现象 本地客户端log越来越大 xff0c 写入速度也会变慢 xff0c 所以在启动时进行清理 2 日志文件名 3 代码 span class token keyword void span span class token funct
  • Python脚本转换为exe程序

    一 安装pyinstaller pip install pyinstaller 二 打包程序 xff08 pyinstaller exe在python下的 Scripts 文件夹下 xff09 python pyinstaller exe
  • QT 计算文件夹总大小并转换为B、KB、M、G

    一 计算文件夹总大小 qint64 span class token function fileSize span span class token punctuation span span class token keyword con
  • QT 自定义滑动条(上方有实时方框显示数值,且带有刻度值)

    文章目录 一 效果图二 原理三 示例代码四 还可以使用系统stylesheet语法来自定义滑动条五 设置小数值 一 效果图 这种滑动条是控件所拼接而成 二 原理 xff08 1 xff09 LectureCorrectBoxSliderFo
  • QT 流式布局水平插入小部件(可自动换行)

    一 类似于这样的效果图 由于对象不确定有多少人 xff0c 所以使用代码 xff0c 在布局中添加部件 xff0c 如果一行撑不下 xff0c 则自动添加到第二行 二 使用FlowLayout FlowLayout是一个自定义布局类 xff
  • QT 计算平均分(向上取整或向下取整)

    一 场景 需要计算四门成绩的平均分 xff0c 并向上取整 span class token keyword double span temp span class token operator 61 span span class tok
  • QT 工作遇到的小问题

    文章目录 1 QT中清空布局中所有小控件2 纯代码添加QPushButton xff0c 设置样式checked不生效3 stackedWidget必须在初始化时 xff0c 设置当前页 xff0c 否则有可能顺序会打乱 xff0c 画面顺
  • QT QPushButton中设置样式出现异常凹凸的问题

    一 设计图 两个互斥的button xff0c 然后我只想设置下边框的颜色 二 设置样式后出现凸起 xff08 太丑了 xff09 QPushButton btnMember span class token punctuation spa
  • 为什么Ubuntu系统安装上以后,分辨率低,屏幕不清晰?安装NVIDIA显卡驱动的方法。

    sudo passwd su ubuntu drivers autoinstall sudo reboot now 询问密码的时候全都输入你安装系统的时候设置的密码 中间停住 xff0c 有下面这个情况 xff0c 输入y xff0c 然后
  • QT 两个exe之间通信

    一 通信方式 通过windowAPI xff0c SendMessage进行通信 xff0c 等待结果返回 xff0c 是一种同步的方式 PostMessage是将消息放入消息队列中 xff0c 立即返回 xff0c 是一种异步的方式 我采
  • QT exe程序与 golang程序通信

    一 背景 QT 与 GO之间进行通信 xff0c 可以很方便在windows平台下用golang开发后台服务 xff0c c 43 43 负责UI界面 二 效果图 三 QT 程序接收方 重写nativeEvent函数 span class
  • QT 获取特定字符串(以换行结尾)

    一 类似如下图字符串 1 取版本值 xff0c 以及下载地址 34 version span class token operator 61 span span class token number 0 0 span span class
  • QT QProcess: Destroyed while process (“apple.exe“) is still running

    一 出错原因 因为我这个程序是一直运行的 xff0c 它会一直回显数据 xff0c 如果你使用对象 xff0c start启动这个命令后 xff0c 程序认为QProcess已经执行完毕 xff0c 自动回收 xff0c 但是此时程序正在执

随机推荐