随笔分类 - C++
摘要:C++11 标准中借助右值引用可以为指定类添加移动构造函数,这样当使用该类的右值对象(可以理解为临时对象)初始化同类对象时,编译器会优先选择移动构造函数。注意,移动构造函数的调用时机是:用同类的右值对象初始化新对象。那么,用当前类的左值对象(有名称,能获取其存储地址的实例对象)初始化同类对象时,是否
阅读全文
摘要:在 C++98/03 中,不同的容器和数组遍历的方式不尽相同,写法不统一,也不够简洁,而 C++11 基于范围的 for 循环可以以简洁、统一的方式来遍历容器和数组,用起来也更方便了。 1. for 循环新语法 在介绍新语法之前,先来看一个使用迭代器遍历容器的例子: #include <iostre
阅读全文
摘要:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定 1. 定义和声明的区别 声明用来告诉编译器变量的名称和类型,而不分配内存,不赋初值。 定义为了给变量分配内存,可以为变量赋初值。 注:定
阅读全文
摘要:1. const修饰普通变量 (1)定义普通变量的时候,只能初始化一次,以后不可再修改其值。 #include<iostream> using namespace std; int main() { //(1)在定义普通变量时,只能初始化一次,以后不能修改其值。 const int numb
阅读全文
摘要:1. C 语言中static关键字用法 1.1 静态局部变量 用于函数体内部修饰变量,这种变量的生存期长于该函数。 int foo() { static int i = 1; // note:1 //int i = 1; // note:2 i += 1; return i; } 要明白这个用法,我
阅读全文
摘要:操作数据库的案例 #include <stdio.h> #include <stdlib.h> #include <mysql.h> //固定不变的 MYSQL mysql; //一个数据库结构体 MYSQL_RES* res; //一个结果集结构体 MYSQL_ROW row; //char**
阅读全文
摘要:一、配置 Visual Studio 连接 MySQL 1、确定 MySQL 安装目录下是否存在 include 和 lib 目录(include目录下包含C/C++连接MySQL的头文件,lib目录下包含所需要的库) 2、打开 VS2019,其它版本也行,然后新建一个空项目,在源文件目录下新建一个
阅读全文
摘要:简介: C++11中增加的线程类,使得我们能够非常方便的创建和使用线程,但有时会有些不方便,比如需要获取线程返回的结果,就不能通过join()得到结果,只能通过一些额外手段获得,比如:定义一个全局变量,在子线程中赋值,在主线程中读这个变量的值,整个过程比较繁琐。C++提供的线程库中提供了一些类用于访
阅读全文
摘要:一、线程为什么要同步 线程同步的目的是为了防止多个线程同时访问共享资源时出现数据竞争和不一致的情况。 线程间为什么需要同步?直接来看一个例子: #include <iostream> #include <time.h> #include <thread> using namespace std; i
阅读全文
摘要:1. 认识多线程 传统的C++(C++11之前)中并没有引入线程这个概念,在C++11出来之前,如果我们想要在C++中实现多线程,需要借助操作系统平台提供的API,比如Linux的<pthread.h>,或者windows下的<windows.h> 。 C++11提供了语言层面上的多线程,包含在头文
阅读全文
摘要:5 STL- 常用算法 概述: 算法主要是由头文件<algorithm> <functional> <numeric>组成。 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric>体积很小,只包括几个在序列上面进行简单数学运算
阅读全文
摘要:3 STL- 常用容器 3.0 std::string(字符串) 3.0.1 string基本概念 本质: string是C++风格的字符串,而string本质上是一个类 string和char * 区别: char * 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一
阅读全文
摘要:4 STL- 函数对象 4.1 函数对象 4.1.1 函数对象概念 概念: 重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质: 函数对象(仿函数)是一个类,不是一个函数 4.1.2 函数对象使用 特点: 函数对象在使用时,可以像普通函数那样调
阅读全文
摘要:2 STL初识 2.1 STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算法的一套标准,诞生了STL 2.2 STL基本概念 STL(Stan
阅读全文
摘要:本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 1.2 函数模板 C++另一种编程思想称为 ==泛型编程== ,主要利用的技术就
阅读全文
摘要:5 文件操作 C++文件操作介绍 文件是指存储在计算机文件系统中的数据集合。文件可以包含各种类型的信息,例如文本、图像、音频视频等。在 C++中,文件是一种数据流,可以用于读取或写入数据。C++提供了一系列的文件操作函数,用于实现对文件的读取、写入、打开、关闭等操作。 在 C++中,文件可以分为文本
阅读全文
摘要:4 类和对象 C++面向对象的三大特性为:==封装、继承、多态== C++认为==万事万物都皆为对象==,对象上有其属性和行为 例如: 人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳、吃饭、唱歌... 车也可以作为对象,属性有轮胎、方向盘、车灯...,行为有载人、放音乐、放空调
阅读全文
摘要:3 函数提高 3.1 函数默认参数 在C++中,函数的形参列表中的形参是可以有默认值的。 语法:返回值类型 函数名 (参数= 默认值){} 示例: int func(int a, int b = 10, int c = 10) { return a + b + c; } //1. 如果某个位置参数有
阅读全文
摘要:2 引用 2.1 引用的基本使用 作用: 给变量起别名 语法: 数据类型 &别名 = 原名 示例: int main() { int a = 10; int &b = a; cout << "a = " << a << endl; cout << "b = " << b << endl;
阅读全文
摘要:本文详细介绍了C++中的内存管理,包括new/delete操作符的使用、自定义类型内存管理、operatornew和operatordelete函数,以及内存泄露的概念、分类、检测和避免方法。特别强调了智能指针和RAII在内存管理中的作用。 C++内存分布 int globalVar = 1; st
阅读全文

浙公网安备 33010602011771号