| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++最佳实践之常用关键字 -> 正文阅读 |
|
[C++知识库]C++最佳实践之常用关键字 |
C++的常用关键字包括:auto、decltype、bool、throw、try、catch、class、constexpr、new、delete、const_cast、static_cast、dynamic_cast、reinterpret_cast、explicit、export、friend、mutable、using、namespace、noexcept、nullptr、operator、private、protected、public、static_assert、template、typename、this、thread_local、typeid、virtual等。我们结合代码示例来介绍各个关键字。 目录 1、auto自动推断变量auto根据变量初始化来推断变量类型。示例如下:
2、decltype推断变量类型与auto不同的是,decltype是根据表达式来推断变量类型。语法格式如下:
表达式包括:变量、运算、函数等,示例如下:
3、bool布尔变量bool关键字表示布尔变量,只有true或false两种变量值。 4、throw/try/catch异常处理使用关键字throw抛出异常,使用try/catch来捕获异常。示例代码如下:
5、class类与对象C++的类与java类相似,都是面向对象编程。类的声明示例如下:
对应的类实现如下:
创建Person类的对象实例:
6、constexpr常量表达式constexpr只能修饰带有return的函数。在C++20增加了consteval修饰常量表达式,不同的是,在编译期确定参数类型。示例如下:
另外,函数体内不能有赋值运算,否则有如下报错:
7、new与delete管理对象在C++提供关键字new来创建对象,delete释放对象。在C语言是用库函数malloc来申请内存,free来释放内存。要注意的是,释放数组需要加上[]。示例如下:
8、类型转换C++提供const_cast、static_cast、dynamic_cast和reinterpret_cast四种类型转换,如下表所示:
类型转换的示例代码如下:
9、explicit显式调用explicit用于修饰单参数的构造函数,被修饰的构造函数只能被显式调用,不能被隐式调用。示例如下:
10、export全局引用C语言有extern关键字用于声明全局变量,但是C++的模板没法用extern修饰。因此,提供export修饰在头文件声明的模板类或模板函数,其他源文件只要引用该头文件即可使用模板类或模板函数。 11、friend友元函数friend关键字把函数声明为友元函数。声明函数为外部类的友元函数后,外部类可以通过友元函数访问该类的私有成员。示例代码如下:
12、mutable可变变量mutable用于且只能修饰类的成员变量,与const修饰常量相反。比如,constexpr修饰的常量表达式不允许修改成员变量,而成员变量添加mutable修饰符后可修改。示例如下:
非成员变量使用mutable修饰符会报错如下:
13、namespace命名空间命名空间用于模块隔离,避免模块之间命名冲突。示例代码如下:
使用using引用命名空间,需要注意的是遵循最小原则。示例如下:
14、noexcept禁止异常使用noexcept修饰函数禁止抛出异常,防止错误扩散。示例如下:
15、nullptr空指针在C语言使用NULL表示空指针,java使用null表示空指针,Object-C使用nil表示空指针。当然,今天的主角是C++,它使用nullptr表示空指针。 16、private、protected和public与java类似,C++提供private、protected和public访问修饰符,可以修饰类、函数、变量。三者对比如下:
17、typeid获取类型信息typeid用于获取类型信息的操作符,使用示例如下:
基本类型对应的类型信息如下表:
18、operator重载操作符在C++中,字符串能够进行加法运算或比较运算,是因为使用operator重载。我们来看下重载加法运算的示例:
然后调用Point类的加法:
19、template模板template可以用于模板类或模板方法,支持不同数据类型的方法复用。示例如下:
然后分别是int类型与float类型的加法运算:
20、this指针this指针在类内部使用,可以访问类的所有成员。示例如下:
21、thread_local线程私有thread_local用于表示线程私有变量,即每个线程都会存储一个变量的值,线程之间互不共享,是C++提供的存储期关键字。与thread_local类似的存储期关键字还有:auto、register、static、extern,各个关键字对比如下:
22、virtual虚函数虚函数是C++的多态机制,使用virtual关键字声明,允许通过基类指针访问基类与派生类的同名函数。基类的析构函数需要声明为虚函数,否则调用不到派生类的析构函数,导致内存泄漏。示例代码如下:
基类与派生类的实现:
测试代码,创建Cat类,然后释放:
打印输出如下,先调用派生类析构函数,再调用基类析构函数:
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:01:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |