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

C++核心知识点总结

学习一门新的程序设计语言得到最好方法就是练习编写程序!

C++基础

变量和基本类型

基本内置类型

定义解释
 算术类型

整型:包括字符和布尔类型,bool、char、wchar_t、char16_t、char32_t、short、int、long、long long、

浮点型:float、double、long double

类型转换

类型所能表示的值的范围决定了转换的过程;

字面值常量

整型:20

浮点型:3.14159

字符:'a'

字符串:"Hello World"

转义序列:/n

变量

变量定义基本形式:首先是类型说明符,随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。

int sum, value;

初始化:当对象在创建时获得了一个特定的值,就说这个对象被初始化了。初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。

double price = 109.99;

列表初始化:用花括号来初始化变量的形式被称为列表初始化。

int units_sold = 0;
int units_sold = {0};
int units_sold(0);
int units_sold{0};

标识符:由字母、数字和下划线组成,其中必须以字母或下划线开头;标识符长度没有限制,但对大小写字母敏感。

int somename, someName, SomeName, SOMENAME;//定义了4个不同的int 变量

作用域:是程序的一部分,在其中名字有其特定的含义,C++语言中大多数作用域都以花括号分隔;同一个名字在不同的作用域可能指向不同的实体;名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端为结束。主要分成全局作用域块作用域

复合类型

复合类型:指基于其他类型定义的类型,主要有引用指针

引用(reference):为对象起了另外一个名字,引用类型引用另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是申明的变量名。

引用必须初始化;

引用即别名;

int ival = 1024;
int &refVal = ival;
int &refVal2; //报错:引用必须被初始化

允许在一条语句中定义多个引用,其中每个引用标识符都必须以符号&开头。

int i = 1024, i2 = 2048; //i和i2都是int
int &r = i, r2 = i2;//r是一个引用,与i绑定在一起,r2是int
int i3 = 1024, &ri= i3; //i3是int, ri是一个引用,与i3绑定在一起
int &r3 = i3, &r4 = i2; //r3和r4都是引用

 指针(pointer):是“指向(point to)”另外一种类型的复合类型,与引用类似,指针也实现了对其他对象的间接访问;指针与引用相比有很多的不同点,其一,指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内他可以先后指向几个不同的对象;其二,指针无须在定义时赋初值。

和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。

定义指针类型的方法将声明符写成*d的形式,其中d是变量名,如果在一条语句中定义了几个指针的变量,每个变量前面都必须有符号*。

int *ip1, *ip2;//ip1和ip2都是指向int型对象得到指针
double dp, *dp2; //dp2是指向double型对象的指针,dp是double型对象

 获取对象的地址:指针存放某个对象的地址,要想获取该地址,需要使用取地址符(操作符&)。

double dval;
double *pd = &dval; //初始值是double型对象的地址
double *pd2 = pd; //初始值是指向double对象的指针

空指针(null pointer): 不指向任何对象,在试图使用一个指针之前代码可以首先检查它是否为空。

建议初始化所有指针。

int *p1 = nullptr;
int *p2 = 0;
int *p3 = NULL; //需要首先#include cstdlib

void*指针:是一种特殊的指针类型,可用于存放任意对象的地址,一个void*指针存放着一个地址,这一点和其他指针类似;不同的是,对该地址中到底是个申明类型的对象并不了解。

指向指针的指针:指针是内存中的对象,像其他对象一样也有自己的地址,因此允许把指针的地址再存放到另一个指针当中。

int ival = 1024;
int *pi = &ival;//pi指向一个int型的数
int **ppi = π//ppi指向一个int型的指针

指向指针的引用:引用本身不是一个对象,因此不能定义指向引用的指针;但指针是对象,所以存在对指针的引用。

int i = 42;
int *p;//p是一个int型指针
int *&r = p;//r是一个对指针p的引用


【=========================================待更新=============2023.7.30========================】

const限定符

处理类型

自定义数据结构

字符串、向量和数组

  1. 命名空间的using声明
  2. 标准库类型string
  3. 标准库类型vector
  4. 迭代器介绍
  5. 数组
  6. 多维数组

表达式

  1. 基础
  2. 算术运算符
  3. 逻辑与关系运算符
  4. 赋值运算符
  5. 递增和递减运算符
  6. 成员访问运算符
  7. 条件运算符
  8. 位运算符
  9. sizeof运算符
  10. 逗号运算符
  11. 类型转换
  12. 运算符优先级表

语句

  1. 简单语句
  2. 语句作用域
  3. 条件语句
  4. 迭代语句
  5. 跳转语句
  6. try语句块和异常处理

函数

  1. 函数基础
  2. 参数传递
  3. 返回类型和return语句
  4. 函数重载
  5. 特殊用途特性
  6. 函数匹配
  7. 函数指针

  1. 定义冲向数据类型
  2. 访问控制与封装
  3. 类的其他特性
  4. 类的作用域
  5. 构造函数再探
  6. 类的静态成员

C++标准库

IO库

  1. IO类
  2. 文件输入输出
  3. string流

顺序容器

  1. 顺序容器概览
  2. 顺序容器操作
  3. vector对象是如何增加的
  4. 额外的string操作
  5. 容器适配器

泛型算法

  1. 初识泛型算法
  2. 定制操作
  3. 再探迭代器
  4. 泛型算法结构
  5. 特定容器算法

关联容器

  1. 关联容器概述
  2. 关联容器操作
  3. 无序容器

动态内存

  1. 动态内存与智能指针
  2. 动态数组
  3. 使用标准库:文本查询程序

C++类设计者工具

拷贝控制

  1. 拷贝、赋值与销毁
  2. 拷贝控制和资源管理
  3. 交换操作
  4. 拷贝控制示例
  5. 动态内存管理类
  6. 对象移动

重载运算与类型转换

  1. 输入和输出运算符
  2. 算术和关系运算符
  3. 赋值运算符
  4. 下标运算符
  5. 递增和递减运算符
  6. 成员访问运算符
  7. 函数调用运算符
  8. 重载、类型转换与运算符

面向对象程序设计

  1. OOP概述
  2. 定义基类和派生类
  3. 虚函数
  4. 抽象基类
  5. 访问控制与继承
  6. 继承中的类作用域
  7. 容器与继承
  8. 文本查询程序再探

模板与泛型编程

  1. 定义模板
  2. 模板实参推断
  3. 重载与模板
  4. 可变参数模板
  5. 模板特例化

C++高级主题

标准库特殊设施

  1. tuple类型
  2. bitset类型
  3. 正则表达式
  4. 随机数
  5. IO库再探

用于大型程序的工具

  1. 异常处理
  2. 命名空间
  3. 多重继承与虚继承

特殊工具与技术

  1. 控制内存分配
  2. 运行时类型识别
  3. 枚举类型
  4. 类成员指针
  5. 嵌套类
  6. union
  7. 局部类
  8. 固有的不可移植的特性

C++11的新特性

特性解释
long long 类型
列表初始化
nullptr常量

参考

C++ Primer(第5版).

相关文章:

C++核心知识点总结

学习一门新的程序设计语言得到最好方法就是练习编写程序! C基础 变量和基本类型 基本内置类型 定义解释 算术类型 整型:包括字符和布尔类型,bool、char、wchar_t、char16_t、char32_t、short、int、long、long long、 浮点型:…...

echart折线图,调节折线点和y轴的间距(亲测可用)

options代码: options {tooltip: {trigger: axis, //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。},xAxis: {type: category,//类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。…...

Power BI-云端报表定时刷新--ODBC、MySQL、Oracle等其他本地数据源的刷新(二)

ODBC数据源 一些小众的数据源无法直接连接,需要通过微软系统自带的应用“ODBC数据源”连接。 1.首次使用应安装对应数据库的ODBC驱动程序,Mysql的ODBC驱动需要手动安装 2.在web服务中进行数据源的配置 Mysql数据源 1.Powerbi与Gateway第一次连SQL…...

redis 淘汰策略和持久化

文章目录 一、淘汰策略1.1 背景1.2 淘汰策略 二、持久化2.1 AOF日志2.1.1 AOF配置2.1.2 AOF策略2.1.3 AOF缺点2.1.4 AOF Rewrite2.1.5 AOF Rewrite配置2.1.6 AOF Rewrite缺点2.1.7 fork进程时的写时复制2.1.8 大key对持久化的影响 2.2 RDB快照2.2.1 RDB配置2.2.2 RDB缺点 2.3 混…...

Redis学习路线(6)—— Redis的分布式锁

一、分布式锁的模型 (一)悲观锁: 认为线程安全问题一定会发生,因此在操作数据之前先获取锁,确保线程串行执行。例如Synchronized、Lock都属于悲观锁。 优点: 简单粗暴缺点: 性能略低 &#x…...

一、创建自己的docker python容器环境;支持新增python包并更新容器;离线打包、加载image

1、创建自己的docker python容器环境 参考:https://blog.csdn.net/weixin_42357472/article/details/118991485 首先写Dockfile,注意不要有txt等后缀 Dockfile # 使用 Python 3.9 镜像作为基础 FROM python:3.9# 设置工作目录 WORKDIR /app# 复制当前…...

【Git】git企业开发命令整理,以及注意点

1.git企业开发过程 业务的分支大概有以下几个: master:代码随时可能上线 develop:代码最新 feature/xxx:实际业务开发分支 release/xxx:预发布分支 fix:修复bug分支 过程大概是这样的: 首…...

使用Django自带的后台管理系统进行数据库管理的实例

Django自带的后台管理系统主要用来对数据库进行操作和管理。它是Django框架的一个强大功能,可以让你快速创建一个管理界面,用于管理你的应用程序的数据模型。 使用Django后台管理系统,你可以轻松地进行以下操作: 数据库管理&…...

leetcode解题思路分析(一百四十五)1254 - 1266 题

统计封闭岛屿的数目 二维矩阵 grid 由 0 (土地)和 1 (水)组成。岛是由最大的4个方向连通的 0 组成的群,封闭岛是一个 完全 由1包围(左、上、右、下)的岛。请返回 封闭岛屿 的数目。 BFS或者DFS…...

使用 GORM 连接数据库并实现增删改查操作

步骤 1:安装 GORM 首先,我们需要安装 GORM 包。在终端中运行以下命令: shell go get -u gorm.io/gorm 步骤 2:导入所需的包 在 Go 代码的开头导入以下包: import ("gorm.io/driver/mysql" // 如果你使用…...

kafka集群搭建(Linux环境)

zookeeper搭建,可以搭建集群,也可以单机(本地学习,没必要搭建zookeeper集群,单机完全够用了,主要学习的是kafka) 1. 首先官网下载zookeeper:Apache ZooKeeper 2. 下载好之后上传到…...

树莓派本地快速搭建web服务器,并发布公网访问

文章目录 树莓派本地快速搭建web服务器,并发布公网访问 树莓派本地快速搭建web服务器,并发布公网访问 随着科技的发展,电子工业也在不断进步,我们身边的电子设备也在朝着小型化和多功能化演进,以往体积庞大的电脑也在…...

集合中的数据结构

栈 先进后出入口跟出口在同一侧 队列 先进先出入口跟出口在不同的一层 数组 查询快、增删慢查询快是因为数组的地址是连续的,我们通过数组的首地址就可以找到数组,之后通过数组的下标就可以访问数组的每一个元素。增删慢是因为数组的长度是固定的&…...

CentOS 8 错误: Error setting up base repository

配置ip、掩码、网关、DNS VMware网关可通过如下查看 打开网络连接 配置镜像的地址 vault.centos.org/8.5.2111/BaseOS/x86_64/os/...

java外观模式

在Java中,外观模式(Facade Design Pattern)用于为复杂的子系统提供一个简单的接口,以方便客户端的使用。外观模式是一种结构型设计模式,它隐藏了系统的复杂性,将多个类的复杂操作封装在一个外观类中&#x…...

3秒快速打开 jupyter notebook

利用 bat 脚本,实现一键打开 minconda 特点: 1、可指定 python 环境 2、可指定 jupyter 目录 一、配置环境 minconda 可以搭建不同的 python 环境,所以我们需要找到 minconda 安装目录,把对应目录添加到电脑环境 PATH 中&#…...

数据安全

数据的备份与恢复 1. 数据备份技术 任何数据在长期使用过程中,都存在一定的安全隐患。由于认为操作失误或系统故障,例如认为错误、程序出错、计算机失效、灾难和偷窃,经常造成数据丢失,给个人和企业造成灾难性的影响。在这种情况…...

华为nat64配置

1.前期环境准备 环境拓扑 拓扑分为两个区域,左边为trust区域,使用IPv4地址互访,右边为untrust区域,使用IPv6地址互访 2.接口地址配置 pc1地址配置 pc2地址配置 FW接口配置 (1)首先进入防火墙配置界面 注:防火墙初始账号密码为user:admin,pwd:Admin@123,进入之后…...

从分片传输到并行传输之大文件传输加速技术

随着大文件的传输需求越来越多,传输过程中也会遇到很多困难,比如传输速度慢、文件安全性低等。为了克服这些困难,探讨各种大文件传输加速技术。其中,分片传输和并行传输是两种比较常见的技术,下面将对它们进行详细说明…...

mybatisPlus入门篇

文章目录 初窥门径1.1 初识MybatisPlus1.2 MybatisPlus的特性1.3 MybatisPlus的架构模型 入门案例2.1 准备相关开发环境2.2 搭建springboot工程2.3 创建数据库2.4 引入相关依赖2.5 创建实体类2.6 集成MybatisPlus2.7 单元测试2.8 springboot日志优化 初窥门径 1.1 初识Mybatis…...

NineData支持最受欢迎数据库PostgreSQL

根据在 Stack Overflow 发布的 2023 开发者调研报告中显示,PostgreSQL 以 45% vs 41% 的受欢迎比率战胜 MySQL,成为新的最受欢迎的数据库。NineData 也在近期支持了 PostgreSQL,用户可以在 NineData 平台上进行创建数据库/Schema、管理用户与…...

Redis配置类

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

【前端知识】React 基础巩固(三十六)——RTK中的异步操作

React 基础巩固(三十六)——RTK中的异步操作 一、RTK中使用异步操作 引入RTK中的createAsyncThunk,在extraReducers中监听执行状态 import { createSlice, createAsyncThunk } from "reduxjs/toolkit"; import axios from "axios";export cons…...

33. 本地记事本

本地记事本 html部分 <button class"add"><i class"iconfont icon-jiahao"></i> </button>css部分 *{margin: 0;padding: 0; } body{background-color: #7bdaf3;display: flex;padding-top: 3rem;flex-wrap: wrap; } .add{pos…...

Android Glide预处理preload原始图片到成品resource 预加载RecyclerViewPreloader,Kotlin

Android Glide预处理preload原始图片到成品resource & 预加载RecyclerViewPreloader&#xff0c;Kotlin <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_MED…...

亚马逊云科技全新Amazon Bedrock,助力客户构建生成式AI应用

亚马逊云科技近日在纽约峰会上宣布全面扩展其全托管基础模型服务Amazon Bedrock&#xff0c;包括新增Cohere作为基础模型供应商&#xff0c;加入Anthropic和Stability AI的最新基础模型&#xff0c;并发布变革性的新功能Amazon Bedrock Agents功能。客户无需管理任何基础设施&a…...

题解:ABC275 C-Counting Squares

题解&#xff1a;ABC275 C-Counting Squares 题目 链接&#xff1a;Atcoder。 链接&#xff1a;洛谷。 难度 算法难度&#xff1a;入门。 思维难度&#xff1a;普及。 调码难度&#xff1a;普及。 综合评价&#xff1a;简单。 算法 dfs数论。 思路 由数学方法可严谨…...

加载已训练好的目标检测YOLOv8,v5,v3,v6模型,对数据集中某张图片中的object打上方框、标出类别,并将图片保存到本地

参考的教程&#xff1a;Python - Ultralytics YOLOv8 Docs 在与ultralytics代码同一层级下新建 predict.py 里面写下面的内容。运行即可 from ultralytics import YOLO from PIL import Image import cv2# 加载计划使用的模型 model YOLO("yolov8n.pt") # load a…...

《零基础入门学习Python》第073讲:GUI的终极选择:Tkinter10

我们不难发现&#xff0c;几乎每一个应用程序都有一些相同的地方&#xff0c;比如说&#xff1a;标题栏、状态栏、边框、滚动条、工作区。还有的就是 菜单。 传统的菜单有大家熟悉的 File&#xff0c;Edit&#xff0c;Help等&#xff0c;点开之后&#xff0c;是下拉菜单&#…...

Shell脚本实现分库分表操作

目录 一&#xff0c;分库备份 二&#xff0c;分库操作 三&#xff0c;分库分表备份 四&#xff0c;备份还原 一&#xff0c;分库备份 #!/bin/bash mysql_cmd-uroot -pzly666666 bak_path/backup/db [ -d ${bak_path} ] || mkdir -p ${bak_path}mysql ${mysql_cmd} -e show…...

贵溪市城乡建设局网站/营销推广方式

触摸交互案例 Input.GetTouch(0).deltaPosition;//获取触摸滑动增量 float num Input.GetTouch(0).deltaPosition.y * 0.003f;//使用y值增量例子其他 单指点击 using UnityEngine; using System.Collections;public class touchTest: MonoBehaviour { void Update() {int i …...

做美食网站视频下载/百度入口官网

课程主页在 http://blog.csdn.net/sxhelijian/article/details/39152703&#xff0c;课程资源在 云学堂“贺老师课堂”同步展示&#xff0c;使用的帐号请到课程主页中查看。 这段代码是典型的用空间换时间的算法&#xff0c;数据与存储其所占空间的下标完全相同。这段代码不具有…...

网站建设初期目标/关键词优化排名软件

来于&#xff1a;http://segmentfault.com/q/1010000000422506 没有缓冲区时&#xff0c;每次读取操作都会导致一次文件读取操作&#xff08;就是告诉操作系统内核我要读这个文件的这个部分&#xff0c;麻烦你帮我把它取过来&#xff09;。有缓冲区时&#xff0c;会一次性读取…...

自适应网站什么做/seo是什么意思网络用语

系列文章目录 &#x1f351;软件测试功能到自动化学习路线图&#xff0c;2022年最新版技术栈 &#x1f351;软件测试01&#xff1a;从了解测试岗位职能和测试流程开始&#xff0c;附作业 &#x1f351;软件测试02&#xff1a;6大实际案例手把手教你设计测试点 &#x1f351;…...

怎么自己弄网站/苏州网站seo优化

一、前言 在数据库中&#xff0c;慢查询日志通常是用来进行优化数据库&#xff0c;MySQL中存在慢查询&#xff0c;Mongodb中也是如此。 在Mongo中的慢查询属于Mongo Database Profiler&#xff0c;而且其信息详细。 接下来介绍下Mongo慢查询 二、开启 Profiling 功能 开启并控…...

营销型网站建设风格设定包括哪些方面?/德芙巧克力的软文500字

记住&#xff0c;表达式是值和操作符的组合&#xff0c;它们可以通过求值成为单个值。“数据类 型”是一类值&#xff0c;每个值都只属于一种数据类型。表 1-2 列出了Python 中最常见的数据类型。例如&#xff0c;值-2 和 30 属于“整型”值。整型&#xff08;或 int&#xff0…...