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

C++11特性学习

nullptr

对于c中null = (void*)0,所以在为函数传参传入0时,无法清楚地分辨是int类型的0还是指的是空指针null

在C++11中清晰的将空指针变为了nullptr,0专指int型的数字0

override关键字

在子类中对父类的函数的覆写之后加上override关键字,编译器就可以检查是否出错,比如拼写是否有错和参数个数是否正确

final关键字

有两个用途,一个是组织从类继承,一个是阻止虚函数的覆写

#include <iostream>
using namespace std;class A	final
{};class B : public A	//错误,由于A类有final关键字,A类无法被继承
{};
int main()
{cout << "final key word." << endl;return 0;
}
#include <iostream>
using namespace std;class A	//final
{public:virtual void show()final{};
};class B : public A
{public:virtual void show()override{};	//错误,因为父类中的虚函数带有final关键字,不能被覆写
};
int main()
{cout << "final key word." << endl;return 0;
}

default关键字

令函数等于default,就是使用系统默认提供的函数(如果有的话)

#include <iostream>
using namespace std;class A
{public:A() = default; //这里相当于默认提供的无参默认构造函数A(){}
//		~A(){}
//		A(const A &another){}
//		A operator=(const A &another){}A(int a){}
};int main()
{A a;return 0;
}

delete关键字

能够让程序员显式的禁用某个函数,在函数声明后加上“= delete”,就可以将此函数禁用

#include <iostream>
using namespace std;class A
{public:static A* get_A(){if(p == nullptr)p = new A;return p;}A() = default;~A() = delete;A(const A &another){}A operator=(const A &another){}private:static A* p; 
};
A* A::p = nullptr;int main()
{A* ap = A::get_A();delete ap;	//illegal,这里不能delete,因为在A类中显式的禁用了A的析构函数return 0;
}

原生字符串raw string

为了解决字符串中一些字符必须经过转义才能输出的问题

#include <iostream>
#include <string.h>
using namespace std;int main()
{//原本字符串为C:\dell\UpdatePackage\log string str1 = "C:\\dell\\UpdatePackage\\log";cout << str1 << endl;string str2 = R"(C:\dell\UpdatePackage\log)";	//将str2定义为原生字符串 cout << str2 << endl;
}

auto-for循环(范围for循环)

#include <iostream>
using namespace std;int main()
{int p[] = {1,2,3,4,5,6,7,8,9,10};for(auto &i : p){cout << i << endl;}
//	const char *q = "china";//这里的指针指向的是字符串字面量,不可改变,要加const 
//	for(const auto &i : q)//illegal,字符指针这种格式不带有begin、end,
//							//但是范围for循环底层是用begin、end来实现的 
//	{
//		cout << i << endl;
//	}char m[] = "china";	//这样以数组的形式是可以使用范围for循环的for(auto &i : m){cout << i << endl;}char n[] = {'c','h','i','n','a'};for(auto &i : n){cout << i << endl;}return 0;
}

http://www.dtcms.com/a/292074.html

相关文章:

  • UE5保姆级基础教程(第五章)
  • Linux操作系统之线程(六):线程互斥
  • 金山办公WPS项目产品总监陈智新受邀为第十四届中国PMO大会演讲嘉宾
  • 什么是AI思维:它是智能优先与世界模型重构商业逻辑
  • anchor 智能合约案例6 之 token_lottery
  • 让 Node.js 支持全局路径的模块搜索
  • solidity从入门到精通 第一章:区块链与智能合约的奇妙世界
  • (LeetCode 面试经典 150 题 ) 128. 最长连续序列 (哈希表)
  • 【bug】 jetson上opencv无法录制h264本地视频
  • [Dify] -进阶9- 使用 API 调用方式将 Dify 嵌入自己的网站
  • Typecho三种版权保护方法对比与实战指南
  • 【硬件基础】计算机存储和通信领域名词概念解释,时钟频率,传输速率,总线宽度,存储容量,带宽利用率,数据位宽,数据带宽
  • 牛客:最长无重复子数组
  • 嵌入式开发学习———Linux环境下数据结构学习(一)
  • Web3面试题
  • [特殊字符] 字节内部流出版!19道前端核心面试题解析——速存
  • 网络基础16--VRRP技术
  • ospf技术
  • 中国在远程医疗智能化方面有哪些特色发展模式?
  • js 数字逢三切断、整数最大9位、小数最大2位
  • LeetCode 热题100:42.接雨水
  • 数据交换---JSON格式
  • uniapp在app中关于解决输入框键盘弹出后遮住输入框问题
  • haproxy七层均衡
  • ucharts 搭配uniapp 自定义x轴文字 实现截取显示
  • 基于SpringBoot+Uniapp的非遗文化宣传小程序(AI问答、协同过滤算法、Echarts图形化分析)
  • 代码随想录算法训练营Day35|动态规划Part03|01背包问题 二维、01背包问题 一维、416. 分割等和子集
  • (12)机器学习小白入门YOLOv:YOLOv8-cls 模型微调实操
  • YOLO-实例分割头
  • 解决http下浏览器无法开启麦克风问题