
C++ 基础
文章平均质量分 73
基础语法,关键字,以及需要注意的细节和区别
幽_篁
It makes sense to be busy living or busy dying.
展开
-
基础篇--指针
c指针常用用法和常见错误原创 2024-03-28 17:06:49 · 487 阅读 · 0 评论 -
c++继承、重载、覆盖、隐藏
1. 继承:即父类实现的函数,在子类中即可调用。2. 重载:相同作用内,如一个类中,函数名相同,但函数形参不同。3. 覆盖:子类和父类中函数名相同,形参相同,基类中有virtual关键字,平常用的最多virtual实现的功能即是覆盖。4. 隐藏:子类和父类的函数名相同,形参不同,无论基类中有无virtual关键字,此时父类中的函数被隐藏;子类和父类的函数名相同,形参相同,父类中无virtual关键字(有关键字即为覆盖,此处可看出覆盖和隐藏的区别)继承继承是基础,有了继承才牵扯出覆盖和隐藏,覆原创 2022-06-06 22:03:04 · 571 阅读 · 0 评论 -
【C/C++学习笔记】C++11 新特性之内存对齐
举个例子介绍下内存对齐,又#include <iostream>struct A{ int a; short b; char c; double d;};struct B{ int a; char b; short c; double d;};struct C{ char a; int b; double c; short d;};int main(){ prin原创 2021-06-12 22:55:59 · 1874 阅读 · 2 评论 -
C++使用Markup解析xml文件
http://www.firstobject.com/dn_markup.htm转载 2021-06-12 21:22:35 · 986 阅读 · 0 评论 -
C++ vector 内存释放
C++ STL容器 vector 的工作原理vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储,类似数组的内存结构。系统预先给vector容器分配一块 capactity 大小的内存空间,当插入的数据超过这个空间的时候,这块空间会让某种方式扩展,即通过一定倍数大小重新分配空间、拷贝元素、撤销旧空间,在vs下为1.5倍扩容,在linux下为2倍扩容。但是为了防止大量分配连续内存的开销,在使用clear和erase删除数据的时候,它只做了数据清除工作,没有释放内存,所以vector容原创 2021-04-08 10:09:52 · 3106 阅读 · 0 评论 -
【C/C++学习笔记】C++11 Lambda 表达式 (匿名函数)(TR1)
Lambda表达式,又称为匿名函数,当我们在函数内部需要嵌套或者调用其他函数时,如果该被调用的函数实现相对简单并且可能在整个项目只使用了一次的时候可以考虑使用匿名函数,这样可以让代码更加紧凑,更加容易维护。如果是多次调用的函数,一般还是建议不要使用匿名函数,虽然写法简单了,但是对于不清楚代码的人来说会提高阅读难度(这个与个人习惯有关)。Lambda表达式语法:[capture list] (parameter list) ->return type { function body }引入原创 2021-03-28 22:08:01 · 283 阅读 · 0 评论 -
【C/C++学习笔记】C++ 调用约定
__cdecl,__stdcall(WINAPI),__fastcall 的区别(1) __cdecl:C/C++默认方式,参数从右向左入栈,主调函数负责栈平衡。(2) __stdcall:windows API默认方式,参数从右向左入栈,被调函数负责栈平衡。(3) __fastcall:快速调用方式。数优先从寄存器传入(ECX和EDX),剩下的参数再从右向左从栈传入。最为关键的原则(1) 导出的函数明确指定调用约定,一般为__stdcall(2) 导出函数,跟调用者保持一致调用约定(3原创 2021-03-28 16:24:09 · 253 阅读 · 1 评论 -
【C/C++学习笔记】C++内存管理详解
C++内存管理详解一、内存分配方式简介在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区,就是那些转载 2021-03-04 16:43:16 · 223 阅读 · 1 评论 -
【C/C++学习笔记】C++11 tuple 元组 和 array 数组(TR1)
tuple类模板std::tuple是固定大小的异类值汇集,支持空列表。它是std::pair的推广。若std::is_trivially_destructible<Ti>::value对Types中的每个Ti为true,则tuple的析构函数为平凡。可以把他当做一个通用的结构体来用,不需要创建结构体又能获取结构体的特征,在某些情况下可以取代结构体使程序更简洁,直观。基本用法构造一个tuple// 声明的时候使用构造函数直接初始化std::...原创 2020-12-31 08:50:38 · 1770 阅读 · 0 评论 -
【C/C++学习笔记】C++11 random 随机数(TR1)
C++11 前,我们使用 <stdlib.h>中的 srand 初始化随机数种子,然后通过 rand() 获取随机数#include <stdio.h>#include <stdlib.h>#include <iostream>#include <time.h>int main(){ srand((unsigned)time(NULL)); // 设置随机数种子, 大小范围 0-32767 for (size_t.原创 2020-12-24 14:58:13 · 792 阅读 · 0 评论 -
【C/C++学习笔记】C++11 正则表达式 regex(TR1)
regex正则表达式正则表达式是一种用于在字符串中匹配模式的微型语言。元字符字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 .原创 2020-12-23 00:00:50 · 455 阅读 · 0 评论 -
【C/C++学习笔记】C++11 智能指针(TR1)
智能指针介绍C++11提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,定义在头文件<memory>中。其中auto_ptr 是 C++98 提供的解决方案,C+11 已将其摒弃,并提出了 unique_ptr 作为 auto_ptr 替代方案。虽然 auto_ptr 已被摒弃,但在实际项目中仍可使用,但建议使用较新的 unique_ptr,因为 unique_ptr 比 auto_ptr 更加安全。shared_ptr 和 wea...原创 2020-12-22 23:49:00 · 1035 阅读 · 0 评论 -
【C/C++学习笔记】C++11 类模板 std::function 和 std::bind(TR1)
1. std::function 类模板定义类模板 std::function 是通用多态函数包装器。 std::function 的实例可以存储,复制和调用任何可复制构造的可调用目标:函数,lambda 表达式,绑定表达式或其他函数对象,以及指向成员函数的指针和指向数据成员的指针。如果 std::function 不包含可调用对象,则称为空。 调用空 std::function 的目标会导致引发 std::bad_function_call 异常。template< class >原创 2020-12-22 15:08:02 · 427 阅读 · 0 评论 -
【C/C++学习笔记】位域
在类和结构体中可以将其(非静态)数据成员定义为位域(bit-field),在一个位域中含有一定数量的二进制位。当一个程序需要向其他程序或硬件设备传递二进制数据时,通常会用到位域。位域定义:int val_name : 位域长度int main() { struct { unsigned int val : 2; // val 占 2位二进制位 unsigned int age : 3; // age 占 3位二进制位 } MyStru原创 2020-12-22 11:43:13 · 180 阅读 · 0 评论 -
【C/C++学习笔记】引用和指针的区别
1.引用引用:某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价(1)&不是求地址运算符,而是起标志作用(2)引用的类型必须和其所绑定的变量的类型相同(3)声明引用的同时必须对其初始化,否则系统会报错(4)引用相当于变量或对象的别名,因此不能再将已有的引用名作为其他变量或对象的名字或别名(5)引用不是定义一个新的变量或对象,因此内存不会为引用开辟新的空间存储这个引用.#include <stdio.h>#include <iostr.原创 2020-12-21 18:31:29 · 362 阅读 · 0 评论 -
【C/C++学习笔记】const 和 static
1、修饰常量(局部变量或全局变量) const int temp1 = 1; //temp1为常量,不可变,必须设置初值 int const temp2 = 2; //temp2为常量,不可变2、修饰指针主要看const在*的前后,在前则指针指向的内容为常量,在后则指针本身为常量; const int *ptr; //*ptr为常量(ptr 为常量的指针) int const *ptr; //*ptr为常量(ptr 为常量的指针) int* const ptr; ...原创 2020-11-17 10:16:15 · 193 阅读 · 0 评论 -
【C/C++学习笔记】C语言结构体指针的输入输出
简单构造一个结构体实例如下:struct student{ char name[20]; int score;};1.指向结构体变量demo:int main(){struct student st1;scanf("%s %d", st1.name, &(st1.score));printf("%s %d\n", st1.name, st...原创 2018-03-30 10:16:41 · 19110 阅读 · 7 评论 -
【C/C++学习笔记】C++ 类和对象
概念 描述 类成员函数 类的成员函数是指那些原型写在类定义内部的函数,原型说明了函数的参数表和返回值类型。函数的定义一般在类外面,也可以直接在类内部定义。前者与普通函数不同的是,实现成员函数时要指明类的名称。 类访问修饰符 类成员可以被定义为 public、private 或 protected。默认情况下是定义为 private。 构造函数 & 析构函数 类的构..原创 2020-06-16 09:06:30 · 212 阅读 · 0 评论 -
【C/C++学习笔记】 虚析构函数,虚基类,虚函数,纯虚函数
C++ 虚析构函数,虚基类,虚函数,纯虚函数1. 虚析构函数2. 虚函数虚函数表虚函数联系到多态,多态联系到继承。虚函数的作用3. 纯虚函数4.虚函数与纯虚函数的区别5. 虚基类1. 虚析构函数在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。(1)当父类的析构函数没有定义为虚析构函数时,对象销毁时只调用了父类的析构函数,而没有调用派生子类的析构函数,会造成子...原创 2019-09-11 17:53:02 · 2996 阅读 · 0 评论 -
【C/C++学习笔记】c++ 回调函数
1.介绍回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。(百度百科)引用知乎一个对回调函数的说明:回调函数的整个过程就好比是,你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里原创 2020-06-16 15:53:42 · 735 阅读 · 0 评论 -
【C/C++学习笔记】强制转换
C、C++强制转换说明介绍说明1. 使用C风格的强制类型转换char ch = 'a';int a = (int)ch;2. 使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。关键字 说明 static_cast 用于良性转换,一般不会导致意外发生,风险很低 const_cast 用于 ..原创 2020-05-21 15:21:27 · 248 阅读 · 0 评论 -
【C/C++学习笔记】new、delete、malloc、free
1、new/delete是C++的操作符,而malloc/free是C中的函数。2、new做两件事,一是分配内存,二是调用类的构造函数;同样,delete会调用类的析构函数和释放内存。而malloc和free只是分配和释放内存。3、new建立的是一个对象,而malloc分配的是一块内存;new建立的对象可以用成员函数访问,不要直接访问它的地址空间;malloc分配的是一块内存区域,用指针访问,可以在里面移动指针;new出来的指针是带有类型信息的,而malloc返回的是void指针。4、new/原创 2020-05-11 09:37:08 · 328 阅读 · 0 评论 -
C/C++学习笔记
一,acm基础算法https://github.com/GhostHallyz/ACM二,串口通信https://github.com/GhostHallyz/Cpp-Project/tree/master/Serial%20communication三,加密算法https://github.com/GhostHallyz/Cpp-Project/tree/master/Cry...原创 2019-03-06 14:42:29 · 239 阅读 · 0 评论