| |
|
开发:
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++入门部分的重点,校招时也很重要,所以大家要牢牢掌握哦,今天的内容就简单多了,加油吧少年们。 内联函数概念以 inline 修饰的函数叫做内联函数,编译时 C++编译器会在调用内联函数的地方直接展开,没有函数压栈的开销,内联函数提升程序运行的效率。
上面的Add函数是普通函数,调用时会建立栈帧,压栈等一系列操作,如果频繁调用Add函数,效率上会有一定的损失。
C语言是定义宏函数,那C++是如何做的呢?C++是在Add函数前增加 inline 关键字,将其改为内联函数,这样的话在编译期间编译器会用函数体替换函数的调用(在调用内联函数处函数体直接展开)。 特性
比如下面的代码就会发生链接错误:
面试题1、宏的优缺点?
缺点:
2、C++有哪些技术替代宏?
auto关键字(C++11)编译器支持C++11时才可以使用auto关键字。 auto简介C++11规定 auto 作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。
注意: auto的使用细则1、auto与指针和引用结合起来使用
2、在同一行定义多个变量
可能有老铁会疑惑,这样看来auto好像也没有太大的用处,其实不然,不信你看:
可能老铁现在还看不懂上面的代码,没关系,你现在可以知道我要表达的意思就行了,后面这些都会详细说明。 auto不能推导的场景1、auto不能作为函数的参数
2、auto不能直接用来声明数组
3、为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法; 基于范围的for循环(C++11)范围for的语法在C++98中如果要遍历一个数组,可以按照以下方式进行:
对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还特容易写错。因此C++11中引入了基于范围的for循环。for循环后的括号由冒号" : " 分为两部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。
如果想恢复成原来数组的数据,这样可以吗?
这样是错误的,因为e改变不会改变array数组中的值,e只是array数组值的一份拷贝,那怎么办呢?用引用即可(不是拷贝,而是别名) 注意:与普通循环相似,可以用continue来结束本次循环,也可以用break来跳出整个循环。 范围for的使用条件1、for循环迭代的范围必须是确定的
2、迭代的对象要实现++和==的操作。(关于迭代器,后面会详细讲解) 关于范围for的底层以后会讲解,大家现在了解会用即可。 指针空值nullptr(C++11)C++98中的指针空值在良好的C/C++编程习惯中,声明一个变量时最好给该变量一个合适的初始值,否则可能会出现不可预料的错误,比如未初始化的指针。如果一个指针没有合法的指向,我们基本都是按照如下方式对其进行初始化:
NULL实际上是一个宏,在传统的C语言头文件(stddef.h)中,可以看到如下代码:
程序本意是想通过 f(NULL) 调用指针版本 f(int*) 函数,但是由于NULL被定义成0,因此和程序的初衷相悖。
大厂面试真题1、关于c++的inline关键字,以下说法正确的是( ) 解析:文章理解之后这道题很简单,选C 2、在( )情况下适宜采用 inline 定义内联函数 解析:跟上一题一样简单 |
|
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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 11:14:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |