期末速成C++【初识C++】

目录

1.英文单词

2.C++的特点

3.C++对C语言的补充

3.1命名空间和域操作符

🎇3.2控制台输入输出

3.3类型增强 

3.3.1const常变量

3.3.2const与指针

3.3.3布尔类型与枚举类型

3.4默认参数

🎇3.5函数重载

🎇引用

3.6.1引用做函数参数

3.6.2函数返回引用

3.6.3常引用

3.7内存管理

🎇3.8new/delete 

3.9指针数组

3.10nullptr

3.11基于范围的for循环


1.英文单词

  • namespace 命名空间

  • Object-Oriented Programming 面向对象

  • template 模板

  • Standard Template Library STL

  • Lambda 表达式-函数编程

  • std standard 标准命名空间

  • End of Line (endl) 标准命名空间换行符

  • console 控制台

  • cin console in

  • cout console out

  • console application

  • Overload 函数重载

  • steam iostream ostream 流

  • constant 常 const

  • enumerate 枚举 enum

  • memory allocate 内存分配 malloc

2.C++的特点

  • 同时支持四种编程范式,面向过程、面向对象、泛型编程、函数式编程
  • 同C语言相比,适合开发大型应用程序。(操作系统内核还是C语言)(多人同时开发namespace)(存在OOP)
  • 具有可复用、可维护、可扩展、灵活性好的特点。(活字印刷)
  • 面向对象OOP三个基本特征:封装、继承、多态

在软件开发过程中唯一不变的是变化!(策略模式)

class类(与结构体struct等自定义类型是具有同等的地位的)成员函数、成员变量

对象的类型:类类型

3.C++对C语言的补充

#include<iostream>
//#include<iostream> 没有扩展名也不影响它是一个文本文件。
//由于C++兼容C语言,对C语言中常用的头文件也进行了替换。
using namespace std;int main()
{cout << "hello word!" << endl;return
}
//数据流操作

3.1命名空间和域操作符

  • :: 域操作符
  • std 标准命名空间
  • 自定义命名空间 } 后面没有分号;
  • 只自定义类型struct 、class后面才有分号;
  • 简化:using namespace std; //可以引用std中的全部元素

🎇3.2控制台输入输出

  • 从左往右结合
  • 输出运算符<<    cout << a << b 返回值是cout
  • 输入运算符>>      cin >> a>> b 返回值是cin

3.3类型增强 

3.3.1const常变量

  • const:只读变量(常变量)的关键词

  • 常变量必须初始化

  • const int * 和 int *不能混用

3.3.2const与指针

  • 常量指针:const int* p 和 int const *p修饰的指向的变量
  • 指针常量 :int* const p修饰的是指针

【常量指针】 

【指针常量】 

3.3.3布尔类型与枚举类型

3.4默认参数

  • 函数在给半缺省参数,必须是从右往左连续依次给出,不能间隔跳跃。(从第一个开始)
  • 调用函数传参:必须从左到右连续传参,不能跳跃。(从第一个开始)
  • 缺省参数不能在函数声明和定义中同时出现,若有声明只能在声明中出现。
  • 优先写在fun.h 没有才写到cpp里面。函数声明和定义不能同时出现。

🎇3.5函数重载

  • 在同一作用域内,函数名相同、参数列表不同。
  • 编译器会根据参数列表自动选择相应的函数。

#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{cout << "int Add(int left, int right)" << endl;return left + right;
}
double Add(double left, double right)
{cout << "double Add(double left, double right)" << endl;return left + right;
}// 2、参数个数不同
void f()
{cout << "f()" << endl;
}
void f(int a)
{cout << "f(int a)" << endl;
}// 3、参数类型顺序不同
void f(int a, char b)
{cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{cout << "f(char b, int a)" << endl;
}int main()
{Add(10, 20);Add(10.1, 20.2);f();f(10);f(10, 'a');f('a', 10);return 0;
}

🎇引用

 引用的类型必须和引用实体是同种类型。共用同一块内存空间。

3.6.1引用做函数参数

void Swap(int& p1, int& p2)//形参到实参也是初始化!
{int tmp = p1;p1 = p2;p2 = tmp;
}
int main()
{int x = 10;int y = 20;cout << "x=" << x << endl;cout << "y=" << y << endl;Swap(x, y);cout << "x=" << x << endl;cout << "y=" << y << endl;return 0;
}

3.6.2函数返回引用

返回引用,函数调用作为左值】✔(下标运算符重载)可以避免返回值的拷贝

#include<iostream>
using namespace std;
int& At(int b[], int index)
{return b[index];
}int main()
{int a[3] = { 1,2,3 };At(a, 1) = 100;cout << "a[1]=" << a[1] << endl;return 0;
}

 

返回引用作右值】 ❌不能返回局部变量的引用。

int& Add(int a, int b)
{int c = a + b;return c;
}
int main()
{int& ret = Add(1, 2);cout << "Add(1, 2) is :" << ret << endl;return 0;
}

3.6.3常引用

3.7内存管理

  • 自由存储区:使用malloc进行分配,使用free进行回收。

  • 堆:内存使用new进行分配,使用delete进行释放。存放进程运行被动态分配的内存段。

  • 栈:内存由编译器在需要时自动分配和释放。存放程序的局部变量(但不包括static声明的变量);函数被调用时的参数和返回值。一个函数被调用两次就会有两个独立的栈.

 

🎇3.8new/delete 

  • new/delete

  • new/delete是两个关键字不是函数。Malloc和free是函数

  • 区分()初始化 和 [ ] 开辟空间的个数

【动态数组和静态数组】

3.9指针数组

  • 因为指针的存在可以直接访问内存,从而提高运行速度。
  • 核心数据要放在堆里面(一定是new出来的)
  • 要使用指针,但是少使用指针运算。例如:*(p+i)=p[i]
  • 能够使用引用,尽量使用引用

3.10nullptr

  • 本来想调用第二个f函数,但是NULL为0整型,会调用第一个f函数。为了解决所以我们在调用第二个函数的时候传nullptr。
void f(int)
{cout << "f(int)" << endl;
}
void f(int*)
{cout << "f(int*)" << endl;
}
int main()
{f(0);f(NULL);f((int*)NULL);//强转f(nullptr);return 0;
}

3.11基于范围的for循环

  • 存在不能通过基于范围的for循环实现。
  •  在下述语法格式中,for循环语句会遍历对象(数组、容器等),将取到的值赋给变量,执行完一次循环自动获取对象中的下一个值赋给变量,直到对象中的数据被迭代完毕。
for(变量:对象)
{//.......
}

极简版!!详细的在另外一个专栏!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/490596.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《数据结构》(408代码题)

2009 单链表&#xff08;双指针&#xff09; 分析&#xff1a;首先呢&#xff0c;给我们的数据结构是一个带有表头结点的单链表&#xff0c;也不允许我们改变链表的结构。链表的长度不是直接给出的啊&#xff0c;所以这个倒数也很棘手。那我们该如何解决这个“k”呢&#xff0c…

在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c

在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c 1. Installing the extension (在 Visual Studio Code 中安装插件)1.1. Extensions for Visual Studio Code1.2. C/C1.2.1. Pre-requisites 1.3. Makefile Tools 2. Configuring your project (配置项目)2.1.…

ur机器人ros-urdf

新建工作空间 mkdir -p ~/catkin_ws/src cd catkin_ws_ur5/src git clone -b melodic-devel https://github.com/ros-industrial/universal_robot.git cd .. rosdep update rosdep install --rosdistro melodic --ignore-src --from-paths src catkin_make source ~/catkin_ws…

Leonardo.Ai丨一键生成图片(AI绘图)

随着人工智能技术的迅速发展,AI在各个领域的应用越来越广泛,特别是在图像生成方面。AI艺术创作的崛起,不仅让艺术创作变得更加便捷和创新,也为设计师、艺术家及普通用户提供了全新的工具。Leonardo.Ai作为一款基于人工智能的图像生成工具,通过简洁的操作和强大的功能,成功…

【前端开发】HTML+CSS网页,可以拿来当作业(免费开源)

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content_lizhongyu"widthdevice-width, initial-scale1.0"><title>小兔鲜儿-新鲜、惠民、快捷<…

AI学习记录 - 依据 minimind 项目入门

想学习AI&#xff0c;还是需要从头到尾跑一边流程&#xff0c;最近看到这个项目 minimind, 我也记录下学习到的东西&#xff0c;需要结合项目的readme看。 1、github链接 https://github.com/jingyaogong/minimind?tabreadme-ov-file 2、硬件环境&#xff1a;英伟达4070ti …

【STM32】RTT-Studio中HAL库开发教程九:FLASH中的OPT

文章目录 一、概要二、内部FLASH排布三、内部FLASH主要特色四、OTP函数介绍五、测试验证 一、概要 STM32系列是一款强大而灵活的微控制器&#xff0c;它的片内Flash存储器可以用来存储有关代码和数据&#xff0c;在实际应用中&#xff0c;我们也需要对这个存储器进行读写操作。…

长安大学《2024年812自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《长安大学812自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题

说说你对java lambda表达式的理解?

大家好&#xff0c;我是锋哥。今天分享关于【说说你对java lambda表达式的理解?】面试题。希望对大家有帮助&#xff1b; 说说你对java lambda表达式的理解? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Java Lambda 表达式是 Java 8 引入的一项重要特性&#…

【PostgreSQL使用】最新功能逻辑复制槽的failover,大数据下高可用再添利器

逻辑复制的failover ​专栏内容&#xff1a; postgresql入门到进阶手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. ✅ &#x1f52…

【leetcode100】环形链表Ⅱ

1、题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

决策曲线分析(DCA)中平均净收益用于评价模型算法(R自定义函数)

决策曲线分析&#xff08;DCA&#xff09;中平均净收益用于评价模型算法 DCA分析虽然不强调用来评价模型算法或者变量组合的优劣&#xff0c;但是实际应用过程中感觉DCA曲线的走势和模型的效能具有良好的一致性&#xff0c;其实这种一致性也可以找到内在的联系&#xff0c;比如…

【人工智能】OpenAI O1模型:超越GPT-4的长上下文RAG性能详解与优化指南

在人工智能&#xff08;AI&#xff09;领域&#xff0c;长上下文生成与检索&#xff08;RAG&#xff09; 已成为提升自然语言处理&#xff08;NLP&#xff09;模型性能的关键技术之一。随着数据规模与应用场景的不断扩展&#xff0c;如何高效地处理海量上下文信息&#xff0c;成…

基于智能电能表的智能家居能源管理系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 电能测量模块数据传输模块能源管理模块控制算法 数据采集与处理算法能源优化算法代码实现 电能测量模块实现数据传输模块实现系统调试与优化结论与展望 1. 引言 随着智能家居的发展&#xff0c;电能管理成为智能家居系统中的…

GLM-4-Plus初体验

引言&#xff1a;为什么高效的内容创作如此重要&#xff1f; 在当前竞争激烈的市场环境中&#xff0c;内容创作已成为品牌成功的重要支柱。无论是撰写营销文案、博客文章、社交媒体帖子&#xff0c;还是制作广告&#xff0c;优质的内容不仅能够帮助品牌吸引目标受众的注意力&a…

软考高级架构 - 10.5 软件架构演化评估方法

10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则&#xff0c;并为每条原则设计了简单而有效的度量方法&#xff0c;用于从系统整体层面提供实用信息&#xff0c;帮助评估和指导架构演化。 演化成本控制&#xff1a;成本小于重新开发成本&#xff0c;经济高效。进…

科研笔记:ARR 与 ACL rolling

1 ARR 介绍 ARR 提供 评审服务 —— 仅限评审 —— 对于提交的论文。评审不会针对特定会议/场所&#xff0c;但评审标准与传统会议的主会场长文或短文提交要求相同&#xff08;如 ACL 或其他由 ACL 主办的重要会议&#xff09; 2 提交论文进行 ARR 评审 提交截止日期 每两个…

9_less教程 --[CSS预处理]

LESS&#xff08;Leaner Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它扩展了CSS语言&#xff0c;增加了变量、嵌套规则、混合&#xff08;mixins&#xff09;、函数等功能&#xff0c;使得样式表的编写更加灵活和易于维护。下面是一些LESS的基础教程内容&#xff…

JVM 双亲委派模型以及垃圾回收机制

目录 1. JVM 内存区域划分 2. JVM 中类加载的过程 1) 类加载的基本流程 2) 双亲委派模型 3. JVM 中垃圾回收机制 1) 找到垃圾 a) 引用计数 b) 可达性分析 2) 释放垃圾 1. JVM 内存区域划分 一个运行起来的 Java 进程&#xff0c;其实就是一个 JVM 虚拟机。 而进程是…

leetcode-73.矩阵置零-day5

class Solution {public void setZeroes(int[][] mat) {int m mat.length, n mat[0].length;// 1. 扫描「首行」和「首列」记录「首行」和「首列」是否该被置零boolean r0 false, c0 false;for (int i 0; i < m; i) {if (mat[i][0] 0) {r0 true;break;}}for (int j …