IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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++基础概要:域作用限定符、重载、引用

1. C++运行环境

C++程序直接在操作系统上运行,而java有JVM虚拟机。

2. 关于引用

引用本质也是传地址。

  • 特点:
  1. 声明时必须初始化:即给值。
  2. 引用初始化后,而不能再做其它变量的别名。
  3. 引用不可以删除,因为引用指向的是一片已经存了值的空间,删除会使得之前的变量丢失。
    ? 但是指针可以删除。

2.1 关于引用和类型转换

  • 临时变量具有常性
  • 不同类型变量之前做赋值,会存在隐式类型转换。会根据根据右边的变量会生成临时的常量,即:临时变量都是常量

    • 如下:过程中包含着隐式类型转换,右值变量先生成常量再给左边。
    • 普通变量可以接收常量,但是引用不可以,如下两个图,所以必须给引用加const。
      请添加图片描述

    • 而下,不能赋值是因为中间变量是常量。
      请添加图片描述

    改正措施:使用const类型的常量
    【当不用指针时,习惯把常量的const放在前面位置】。
    请添加图片描述
    但是,使用auto就不会用它的const属性,只要了类型
    如下,10.11是常量,但是不会报错。
auto a = 10.11;
此外,auto转换任何类型变量过来,都不会出现const。
  • 总结

不同类型变量转换会产生中间值,但是相同类型变量赋值不会产生中间值


2.2 符号"&"本身

    1. 符号&是两用的,既是取地址符号,也是取别名符号。
int a = 10;
int& b = a;
const int c = 10;
const int& d = c;
    1. 如下,&做引用时,不可以把常量给int类型引用,因为权限 放大了了,本来c是常量不可以改变,但是用变量类型的d来接收c,说明d可以改变,相当于c也可以改变,所以权限自行放大必然不可以。
      请添加图片描述
      但是权限缩小是可以的。用const int & m = a;
      a是int类型,但是起了常量类型别名,权限缩小可以。
    1. 语法层面:
      指针和引用完全不同,形成的汇编中发现,指针会开空间,存储变量地址,而引用不开空间,只会对变量取别名。

3. C++部分特殊语法

+ 语法糖:
1. 【范围for】自动取数组中每个元素,取到的类型一定是数组中元素的类型,auto和arr中确定类型都可以。此外,必须是数组名,不能通过函数参数传入的数组,做范围for。
int arr[] = { 1, 2, 3, 4 ,5 };
for (auto e : arr)
		cout << e << endl;
		如下,范围for不可以用,参数中的数组名其实成了指针,**范围for必须通过数组名来用。**

请添加图片描述

  • 语法层面:
    • 空指针:C++11推荐用:nullptr。
    • 空NULL也对应:0,而nullptr类型是指针,但是值仍然是0

4. 函数重载

同名同参数可以重载,但只有返回值不同不算重载。
重载必须要参数不同,或者不同类型参数顺序不同。
C语言不支持函数重载,C++才支持,因为函数命名规则机制。

5.inline内联

优点:

  1. C语言的宏有缺点:语法复杂、C不检查、不支持调试。
  2. 使用内联,指令会变少,速度快,而指令多意味着性能下降。

注意:
函数太大或有递归,内联就别用。因为inline是空间换时间。
inline关键字函数会被编译器在视为内联函数,调用处可以展开,但是太大的话,编译器有权不展开。
【补充】:
auto可以自动补全类型。

6.命名空间

主要是为了解决名字冲突,当:

  1. 调用一些特定函数时,即使同名,但是加上命名空间调用,就可以区分不同同名的函数。
  2. 工程太大,模块太多,难免有同名函数。
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:33:07  更:2022-09-30 00:37:01 
 
开发: 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年4日历 -2024/4/19 1:15:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码