
C++基础
文章平均质量分 67
CID( ͡ _ ͡°)
这个作者很懒,什么都没留下…
展开
-
C++ 枚举类型
枚举就是一一列举的意思,在C++语言中枚举类型是一些标识符的集合,从形式上看枚举类型就是用大括号将不同标识符名称放在一起。用枚举类型声明的变量,其变量的值只能取括号内的这些标识符枚举类型的声明枚举类型定义有两种声明形式:(1)枚举类型定义的一般形式enum 枚举类型名 {标识符列表};例如:enum weekday{Sunday,Monday,Tuesday,Thu...原创 2020-03-29 21:19:58 · 414 阅读 · 0 评论 -
C++ 结构体
结构体定义整型、长整数、字符型、浮点型这些数据类型只能记录单一的数据,而且这些数据类型只能被 称作基础的数据类型。如果要描述一个人的信息,就需要定义多个变量来记录这些信息,例如身高需要一个变量,体重需要一个变量,姓名需要一个变量,年龄需要一个变量,性别需要一个变量。如果可以将这些变量包含在一起则会大大减少程序代码的离散性,使程序代码阅读更加符合逻辑。而结构体则是实现这一功能的类型。...原创 2020-03-25 18:27:34 · 227 阅读 · 0 评论 -
c++类
类的定义#include <iostream>#include <string>using namespace std;//class 的限令符:public 公共的,protected 受保护的,private 私有的class Coordinate {public: void addrun(int x, int y) { int_x = ...原创 2019-08-06 20:51:55 · 370 阅读 · 0 评论 -
C/C++中static的作用
C/C++中static的作用原创 2022-07-09 18:54:50 · 546 阅读 · 0 评论 -
数据库连接池
1.池化技术池化技术能够减少资源对象的创建次数,提高程序的响应性能,特别是在高并发下这种提高更加明显。使用池化技术缓存的资源对象有如下共同特点:1.对象创建时间过长; 2.创建需要大量资源; 3.对象创建后可被重复使用向常见的线程池、内存池、连接池、对象池都具有以上都共同特点。2.什么是数据库连接池定义:连接池是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态对池中的连接进行申请,使用和释放。简单的来说:创建数据库连接是一个很耗时的操作,也容易对数据库造.原创 2022-04-11 22:49:04 · 1740 阅读 · 0 评论 -
常用设计模式
1.内存模型:可以看看继承与多态 的内存模型2.模式设计原则:#1:依赖倒置原则高层模块不应该依赖底层模块,二者应该都依赖抽象; 抽象不应该依赖具体实现,具体实现应该依赖抽象; 自动驾驶系统公司是高层,汽车生产厂商是底层,它们不应该相互依赖,一方变动另一方也会跟着变动;而应该抽象一个自动驾驶行业标准,高层和底层都依赖它;这样以来解耦了两方的变动;自动驾驶系统和汽车生产厂都是具体实习,它们都应该依赖自动驾驶行业标准(抽象)#2.开放封闭原则一个类应该对外扩展开放,对修改关闭#...原创 2022-02-25 00:42:04 · 539 阅读 · 0 评论 -
C++11 常用知识点汇总
C++11 新增的知识点整理总结一:关键词和语法auto:可以根据右值,推到出右值的类型,然后左边变量的类型也就已知了nullptr: 给指针专用(能够区分整数进行区别) #define NULL 0for(Type val : container) { } 遍历容器元素右值引用:move 移动语义函数和forward类型完美转发函数模板的一个新特性:typename... A 表示可变参(类型参数)二、绑定器和函数对象function :函数对象bind:绑...原创 2022-02-20 19:39:38 · 620 阅读 · 1 评论 -
绑定器和函数对象
1.什么时候会用到bind1st 和 bind2nd?bind1st 和bind2nd 都是绑定二元函数对象成一元函数对象greater 和 less 都是二元函数template<typename Container>void showContainer( Container &con ){ typename Container::iterator it = con.begin(); for(; it != con.end(); ++ it)原创 2022-02-19 17:27:55 · 521 阅读 · 0 评论 -
深入理解掌握智能指针
智能指针的介绍裸指针到底有什么不好,写过一些C++代码的人应该都能知道,比如下面的原因:忘记释放资源,导致资源泄露(常发生内存泄漏问题) 同一资源释放多次,导致释放野指针,程序崩溃 代码的后面写了释放资源的代码,但是由于程序逻辑满足条件,从中间return掉了,导致释放资源的代码未被执行到 代码运行过程中发生异常,随着异常栈展开,导致释放资源的代码未被执行到智能指针,主要体现在用户可以不关注资源的释放,因为智能指针会帮你完全管理资源的释放,它会保证无论程序逻辑怎么跑,正常执行或者产生异常,原创 2022-02-12 00:27:26 · 902 阅读 · 0 评论 -
STL 6大组件
简介一、标准容器1.顺序容器 :vector、deque、list2.容器适配器:stack、priority_queue3.关联容器 无序关联容器(链式哈希表实现、增删查O(1)):unordered_set、unordered_multiset、unordered_map、unordered_multimap 有关联容器(基于红黑树实现、增删查O(log2n) 2是底数(数的层数,数的高度)):set、multiset、map、multimap二...原创 2022-02-07 18:26:11 · 1655 阅读 · 0 评论 -
继承与多态
继承的本质和原理继承的本质: 代码复用类和类之间的关系: 组合:a part of ....... 一部分的关系 继承: 一种的关系继承 继承方式 基类的访问限定 派生类的访问限定 外部的访问限定 public public public yes protected protected no private 不可见 no protected public protec...原创 2022-02-05 00:21:03 · 710 阅读 · 0 评论 -
C++对象运算符重载,容器迭代器
+,++, += 、其他的运算符重载函数差不多,以及输出out,输入 in#include <iostream>using namespace std; /* C++ 运算符重载:使对象的运算表现得和编译器内置类型一样template<typename T>T sum(T a, T b){ return a+ b; //a.+(b)}1.编译器做对象运算的时候,会调用对象的运算符重载函数(优先调用成员方法);如果没有成员方法 就在全局作用域找.原创 2022-02-02 18:06:07 · 1614 阅读 · 0 评论 -
理解函数和类模板
函数模板模板的意义:对类型也可以进行参数化了int sum(int a ,int b) {return a + b;}函数模板 :是不进行编译的,因为类型还不知道模板的实例化 :函数调用点进行实例化在函数调用点,编译器用用户指定的类型,从原模板实例化一份函数代码出来比如:compare<int>(10,20); 调用它就会实例化以下的函数代码bool compare<int>(int a...原创 2022-01-25 23:31:57 · 457 阅读 · 0 评论 -
C++类对象详解
类和对象、this指针OOP语言的四大特征是什么?: 抽象 封装/隐藏 继承 多态访问限定符: public 公有的 给外部提供公有方法,来访问私有的属性 private 私有的 不能在类外访问 属性都是私有的 protected 保护的1.类体内实现的方法,自动处理成inline内联函数2.常量字符串是不允许让普通指针接收3.类的内存大小计算:...原创 2022-01-24 21:11:23 · 1344 阅读 · 0 评论 -
C++ 对象使用优化
对象的生命周期例子1:class Test{ public: Test(int a= 10) :ma(a) { cout << "Test()" <<endl; } ~Test() { cout << "~Test()" <<endl; } Test(const Test原创 2022-01-23 23:17:15 · 235 阅读 · 0 评论 -
new 和delete
malloc 和 free 是c的库函数例子: 指针 指针类型。 函数。 申请多大的内存 int *p = (int *)malloc(sizeof(int)); 判断是否申请失败 if (p == nullptr) return -1; 给指针赋值 *p =20; 释放指针内存 free(p);new 和 delete 是运算符例子: int *p1 = new int(20);..原创 2022-01-17 23:23:32 · 248 阅读 · 0 评论 -
C++的左值引用和右值引用
引用和指针的区别:引用是一种更安全的指针。汇编指令层面引用和指针没有任何区别的,只是赋值的时候,引用是使用地址解引用来赋值的1.引用是必须要初始化的,指针可以不初始化2.引用只有一级引用,没有多级引用;指针可以有多级指针int a = 10;int *p = nullptr;//指针int &b = a; //引用*p = 20; //指针修改值b = 30; //引用修改值3.定义一个引用变量,和定义一个指针变量,其汇.原创 2022-01-17 23:07:32 · 545 阅读 · 0 评论 -
const的用法
C 和 CPP中 const的区别:const的编译方式不同,c中const就是当作一个变量来编译生成指令的。 cpp中所有出现const常量名字的地方,都被常量的初始化替换。main.cc语言中的const不叫常量,他叫常变量const int a = 20;//int array[a] = {} ; //不能给数组定义长度虽然不能直接修改,但是可以通过解引用给指针去修改,比如:int *p = (int *)&a;*p = 30...原创 2022-01-15 20:19:18 · 152 阅读 · 0 评论 -
函数重载详解
1.C++ 为什么支持函数重载,c语言不支持函数重载 )C++代码产生函数符号的时候,函数名 + 参数列表类型组成的,如一下compare函数里边的打印 )C代码产生函数符号的时候,只有函数名2.函数重载需要注意些什么?3.C++ 和C语言代码之间如何调用bool compare(int a, int b){ cout << "compare_int_int" << endl; return a > b; }...原创 2022-01-08 20:02:31 · 453 阅读 · 0 评论 -
inline内联函数
inline 内联函数和普通函数的区别:1.inline内联函数:在编译过程中,就没有函数的调用开销了,在函数的调用点直接把函数的代码进行展开处理2.inline 函数不再生成相应的函数符号int sum(int x, int y) //*.o. sum_int_int .text{ return x + y;}int main(){ int a = 10; int b = 20; int ret = sum(a...原创 2022-01-08 18:17:52 · 122 阅读 · 0 评论 -
函数行参带默认值,以及传值的效率
#include <iostream>using namespace std;int sum(int a = 10, int b = 20){ int temp = 0; temp = a + b; return temp;}int main(){ int a = 10; int b = 20; int ret = sum(a, b); /* mov eax, dword ptr[e...原创 2022-01-08 15:51:18 · 319 阅读 · 0 评论 -
函数的调用堆栈详细过程
int sum(int a, int b){ int temp = 0; temp = a + b; return temp;}int main(){ int a = 10; int b = 20; int ret = sum(a, b); cout << ret << endl; return 0;}原创 2022-01-05 23:32:03 · 282 阅读 · 0 评论 -
进程虚拟地址空间区域划分
原创 2022-01-04 21:53:22 · 252 阅读 · 0 评论