![](https://img-blog.csdnimg.cn/20210617232002410.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++语法
文章平均质量分 81
对C++ Primer 5的总结,还包括并发编程、C++应用等内容。
qq_26697045
这个作者很懒,什么都没留下…
展开
-
C++ 学习资料
欢迎访问我的博客。原创 2023-04-28 19:39:18 · 101 阅读 · 0 评论 -
C++ 总结 基本成员函数
类的构造函数和赋值运算符重载函数是常用且重要的两大类成员函数, 前者用于控制对象的初始化,后者用于控制对象的拷贝。本节介绍 11 个成员函数,包括 4 种构造函数、2 种赋值运算符重载函数、输入输出运算符重载函数、2 个取地址运算符函数、1 个析构函数。原创 2023-04-02 20:12:02 · 855 阅读 · 0 评论 -
C++ 命名空间
欢迎访问我的博客。原创 2022-09-28 00:19:45 · 452 阅读 · 0 评论 -
工 具 函 数
C++基础一. 指针二. sizeof运算符三. 内存泄漏一. 指针 一维数组指针、二维数组指针、函数指针。// 1.指向一维数组的指针。pa是指针,*(pa+i)等价于a[i]。int a[5] = { 4, 3, 2, 1, 0 };int* pa = a;// 2.指向二维数组的指针。pb是指针,*(pb+i)等价于b[i]。int b[2][3] = { {1,2,3},{4,5,6} };int(*pb)[3] = b;// 3.函数指针。float (*pc1)(int原创 2021-04-20 00:27:24 · 1603 阅读 · 1 评论 -
特殊工具与技术
特殊工具与技术1. 控制内存分配1. 控制内存分配1. 重载new和delete2. malloc和free函数3. 定位new表达式 定位new表达式用于在已分配的内存上创建对象。使用形式如下。其中,place_address是指针,指向已分配内存。定位new表达式中的new不能也不需要有与之配对的delete操作。new (place_address) typenew (place_address) type (initializer-list)int* m1 = new int[原创 2021-06-11 15:55:34 · 187 阅读 · 1 评论 -
用于大型程序的工具
查找1. 二分查找1. 二分查找int binarySearch(int* a, size_t low, size_t high, int x) { while (low <= high) { size_t mid = (low + high) / 2; if (a[mid] < x) low = mid + 1; else if (a[mid] > x) high = mid - 1; else return mid; } return -1;原创 2021-05-27 14:34:59 · 179 阅读 · 0 评论 -
标准库特殊设施
标准库特殊设施1. 随机数1.1 函数rand()1.2 随机数引擎和分布1.3 其他随机数分布1. 随机数1.1 函数rand() 函数rand()产生[0, RAND_MAX]范围内的随机数。如果不使用srand()函数设置种子,每次运行时产生的多个随机数一般不相等,但程序多次运行的结果是相同的。cout << RAND_MAX << endl; // 32767 = 2^15-1。srand((unsigned)time(NULL));cout <<原创 2021-06-16 23:49:23 · 231 阅读 · 1 评论 -
模板与泛型编程
模板与泛型编程1. 非类型模板参数1. 非类型模板参数// 整型template<int n>void fInteger1() { cout << n << endl; }template<int n>void fInteger2(int (&a)[n]) { cout << n << endl; }// 指针。template<int* p>void fPointer() { cout <&原创 2021-06-11 11:16:57 · 157 阅读 · 2 评论 -
面向对象程序设计
C++数据结构原创 2021-04-21 22:14:08 · 374 阅读 · 0 评论 -
重载运算与类型转换
重载运算与类型转换1. 输入和输出运算符2. 函数调用运算符2.1 lambda是函数对象2.2 标准库定义的函数对象2.3 可调用对象与function1. 输入和输出运算符2. 函数调用运算符2.1 lambda是函数对象2.2 标准库定义的函数对象2.3 可调用对象与function 可调用对象有5种:函数、函数指针、lambda表达式、bind创建的对象、重载了函数调用运算符的类。 调用形式:调用形式指明调用返回的类型以及传递给调用的实参类型。 使用function模板类型可以原创 2021-06-14 18:35:47 · 141 阅读 · 0 评论 -
拷贝控制
拷贝控制1. 拷贝构造函数2. 拷贝赋值函数3. 阻止拷贝4. 移动语义1. 拷贝构造函数2. 拷贝赋值函数3. 阻止拷贝 有些类不允许拷贝,比如iostream类和unique_ptr智能指针。阻止拷贝通过拷贝构造函数和拷贝赋值函数实现。1. 定义删除的拷贝构造函数和拷贝赋值函数‘’'cpp4. 移动语义...原创 2021-06-10 11:57:54 · 194 阅读 · 0 评论 -
动态内存
动态内存1. 智能指针2. new和delete运算符3. allocator类1. 智能指针2. new和delete运算符 new申请内存、调用构造函数、返回指向内存的指针。delete调用析构函数、释放内存。 new分配内存失败会抛出一个类型为bad_alloc的异常,所以没有必要检查返回的指针。 new可以分配对象数组,使用 delete [] ptr 释放对象数组。因为new会调用构造函数,使用new分配对象数组,要求对象类型必须有默认构造函数。string* ptr = new原创 2021-06-11 23:22:26 · 281 阅读 · 2 评论 -
泛 型 算 法
重载运算与类型转换1. 重载运算符1. 重载运算符class Example {public: Example(int x) :a(x) {} int operator+(Example& e) { return a + e.a; } int operator+(int x) { return a + x; } friend int operator+(int x, Example& e) { return x + e.a; } int operator()(int x) {原创 2021-06-14 22:23:05 · 191 阅读 · 0 评论 -
容器与容器适配器
容器1. 顺序容器2. 关联容器3. 实现vector1. 顺序容器容器名称实现特点vector向量连续空间尾部增删快deque双端队列连续空间首尾增删快list/forward_list双向/单向链表链表不能随机访问array数组固定大小不能增删string字符串连续空间尾部增删快2. 关联容器容器实现特点map、set红黑树multimap、multiset红黑树关键字可重复原创 2021-05-14 23:29:42 · 357 阅读 · 0 评论 -
IO库
C++:初始化列表1.初始化列表的必要性1.1 类成员为const类型和引用类型1.初始化列表的必要性 以下几种情况必须使用初始化列表:类成员为const类型类成员为引用类型类成员为没有默认构造函数的类类型如果类存在继承关系,派生类必须在其初始化列表中调用基类的构造函数1.1 类成员为const类型和引用类型 因为这两种类型的成员在定义时必须初始化且不可更改(不可改变con...原创 2019-11-07 11:06:09 · 209 阅读 · 0 评论 -
类
类1. 访问控制1. 访问控制原创 2021-06-11 23:16:45 · 187 阅读 · 0 评论 -
函数
函数1. 几种函数1. 几种函数1. 常量表达式函数 一些地方必须使用常量表达式。比如:当一个模板实例化时,非类型参数被一个用户提供的或编译器推断出的值所代替,这些值必须是常量表达式。 常量、常量表达式、常量表达式函数都可以为一个常量表达式赋值。所以这里介绍一下常量表达式函数。 常量表达式函数的返回类型及所有形参的类型都得是字面值类型,而且函数体中必须有且只有一条return语句。constexpr int get(int x) { return x + 1; }int main() {原创 2021-06-11 12:03:05 · 206 阅读 · 1 评论 -
表达式
C++:访问控制与继承1. public继承1. public继承 A是基类,B是派生类,小写字母是对象。Aabpublic直接引用直接引用protected通过A的public成员函数引用通过A或B的public成员函数引用private通过A的public成员函数引用通过A的public成员函数引用只有public成员可以被对象直接...原创 2019-10-27 18:02:40 · 389 阅读 · 0 评论 -
变量与基本类型
基本数据类型与修饰符1. 数组1. 数组1. 数组做参数时的形参void fun(int (&a)[3]); // 只能匹配元素个数为3的int型数组。sizeof(a) = sizeof(int) * 元素个数。void fun(int* a); // 可以匹配元素个数任意的int型数组。sizeof(a) = sizeof(int*) = 8。 实参数是元素个数为3的int型数组时,会因为可以匹配这两个函数而报错。...原创 2021-06-11 09:56:29 · 327 阅读 · 0 评论