c语言
文章平均质量分 71
onnx
程序员的每日一拱!
平常喜欢分享项目实践经验,知识点,实战项目,欢迎留言,评论,沟通交流,一起进步。
吾等采石之人,当心怀大教堂之愿景。
愿我们奔赴在自己的热爱里!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++学习笔记总结练习:多态与虚函数
重定义:基类中没有声明函数是虚函数。派生类中对普通函数进行了重定义。只是作用域上的覆盖,没有触发多态和动态绑定。重定义不能触发动态多态。无论指针或引用绑定的是什么对象,都会根据指针或引用的类型,调用该类型的函数。而不是使用虚指针查找虚函数表。只有调用虚函数的时候,才会去根据对象的虚函数指针,查找类中的虚函数表。return a;return a;int real_ex(){//重定义A的函数return b;原创 2023-09-02 20:31:31 · 656 阅读 · 0 评论 -
C++学习笔记总结练习:继承与派生
public:private:Bulk_quote::Bulk_quote(string book,double p,int qty,double disc):Quote(book,p),min_qty(qty),discount(disc){}//委托基类构造函数从派生类向基类的类型转换只对指针或引用有效。是指针或引用的类型转换,而不是其指向的对象的类型发生改变。基类向派生类不存在隐式类型转换派生类向基类的类型转换也可能会由于访问受限而变得不可行。原创 2023-08-31 18:30:00 · 206 阅读 · 0 评论 -
C++学习笔记总结练习:类与对象
面向对象程序设计(Object-Oriented Programming,简称 OOP)是一种编程范式,它将程序组织为对象的集合,这些对象通过相互之间的交互来完成任务。在面向对象编程中,对象是程序的基本单元,具有属性(数据)和方法(行为)。面向对象程序设计的核心概念包括:类(Class):类是对象的模板或蓝图,描述了对象的属性和方法。它定义了对象的结构和行为。例如,一个 “汽车” 类可以定义汽车的属性(如颜色、品牌、速度)和方法(如加速、刹车)。原创 2023-08-31 09:00:00 · 338 阅读 · 0 评论 -
C++学习笔记总结练习:运算符重载两种方式
运算符时具有特殊名字的函数:由关键字operator和气候定义的运算符共同组成。可以被重载的运算符。原创 2023-08-30 19:30:00 · 1232 阅读 · 0 评论 -
C++学习笔记总结练习:构造函数和析构函数
析构函数与构造函数对应,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。类的成员函数,由拨浪号接类名构成,没有返回值,不接受参数。不能被重载,一个类只有一个析构函数。声明一个符号。如果有extern,则表示变量在外部顶底,链接其他问件事,匹配外部定义的变量。分配内存、指定变量名。原创 2023-08-30 08:30:00 · 249 阅读 · 0 评论 -
C++学习笔记总结练习:C内存分配与初始化
然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有满足用户要求的片段了。于是,malloc函数请求延时,并开始在空闲链上,检查各个内存片段,对他们进行整理,将相邻的小空闲块合并成较大的内存块。malloc分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间。功能:返回一个指向n个连续字符存储单元的指针。原创 2023-08-29 16:45:00 · 364 阅读 · 0 评论 -
C++学习笔记总结练习:数组参数
函数使用循环遍历数组,并打印每个元素。在 main 函数中,我们定义了一个整数数组 myArray,并计算数组的大小。传递数组:当你调用带有数组参数的函数时,你可以传递一个数组作为实际参数。数组大小:在函数中,你可以使用数组参数来访问数组元素,并使用数组大小来遍历数组。然而,在 C++ 中,数组参数的大小信息在函数内部是不可用的,因此通常需要额外的参数来传递数组的大小。数组指针:在函数中,数组参数实际上是一个指向数组首元素的指针。这意味着你可以将一个数组作为函数的参数,以便在函数内部对数组进行操作或访问。原创 2023-08-29 10:30:00 · 451 阅读 · 0 评论 -
C++学习笔记总结练习:new和delete使用及讲解
参考文献new operator/delete operator就是new和delete操作符。而operator new/operator delete是全局函数。原创 2023-08-28 09:42:53 · 437 阅读 · 0 评论 -
C++学习笔记总结练习:字符串类实现
使用构造函数初始化字符串的另外两种方式,动态指针+拷贝构造函数 )查找某字符串是否位于指定的字符串中(采用暴力查找)缺省构造函数对字符串的初始化MyString()实现头文件的封装:MyString.h。析构函数,释放动态申请的字符串空间。重载下标运算符 [],索引输出。字符串中指定两个字符的交换。重载输出运算符原创 2023-08-28 19:30:00 · 346 阅读 · 2 评论 -
C++学习笔记总结练习:内存对齐
编译器为程序中的每个“数据单元”安排在适当的位置上。原创 2023-08-28 09:40:30 · 452 阅读 · 0 评论 -
C++学习笔记总结练习:C++内存分配
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ggcplZx-1692237195837)(image/2021-03-04-10-30-35.png)]原创 2023-08-23 08:00:00 · 182 阅读 · 0 评论 -
C++学习笔记总结练习:多文件编程的实例
使用条件编译控制被引入的文件,防止被多次编译。条件编译解决的是,预处理阶段,某一个文件,多次包含同一个文件。例如,b包含a,c包含a,c又包含b;#include的预处理阶段,c包含了两段a的代码,那么编译过程会出现include的错误。所以在所有的头文件中,应当加上条件编译,在给别人使用过程中,防止被直接或间接包含多次。原创 2023-08-23 05:00:00 · 264 阅读 · 0 评论 -
C++学习笔记总结练习:全局变量和静态变量和static
在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员(这点非常重要)。如果静态成员函数中要引用非静态成员时,可通过对象来引用。从中可看出,调用静态成员函数使用如下格式:::();:在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。:静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。原创 2023-08-23 09:00:00 · 236 阅读 · 0 评论 -
C++学习笔记总结练习:C++左值右值
函数内的局部对象做为返回值返回(不是引用)的时候会发生拷贝(拷贝为临时对象返回)函数形参为传值的时候,会发生拷贝构造一个对象以另外一个对象进行初始化的时候对象的频繁构造是程序的开销,特别是当对象内部有堆上内存(比如有 new 出来的成员)的时候,每次拷贝构造的时候都需要用 new 申请一块内存,造成性能的降低。对于情况2,好习惯是如果函数参数是只读的(也即不会在程序内进行修改),传引用作为参数,也即 pass_A_by_refrence(const A &a);对于情况1,编译器会为我们进行优化。原创 2023-08-20 16:00:00 · 259 阅读 · 0 评论 -
C++学习笔记总结练习:STL源码解析
STL提供六大组件,彼此可以组合套用容器:vector,deque,list,set,map算法:sort,search,copy,erase迭代器:扮演容器和算法之间的胶合剂,是所谓的“泛型指针”仿函数:行为类似函数,可作为算法的某种策略(policy)。从实现角度来看,仿函数是一种重载operator()的class或class template。一般函数指针可视为狭义的仿函数。配接器:一种用来修饰容器或仿函数或迭代器接口的东西。配置器:负责空间配置和管理。原创 2023-08-20 10:00:00 · 730 阅读 · 0 评论 -
C++学习笔记总结练习:primer 学习日志
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OmcL9TWm-1692172569911)(C:\Users\pro\AppData\Roaming\Typora\typora-user-images\1659097168347.png)]首先const 可以明确指定的类型 例如 const int Month=12其次,使用const 可以将变量只指定在你想指定的范围中,#define指定在全局中最后,const可用于更复杂的数据结构,例如数组等等。原创 2023-08-19 18:00:00 · 284 阅读 · 0 评论 -
C++学习笔记总结练习:Linux下vscode编程
学习linux下通过vscode进行c++编程的学习总结,知识内容包括使用g++,cmake编译,已经最后在vscode上对代码进行调试。原创 2023-08-19 12:00:00 · 488 阅读 · 0 评论 -
C++学习笔记总结练习:EffectiveSTL
标准容器:指的是c++标准化后的容器,遵从c++的标准,不同的编译器都支持,代码移植能力强。对于多态的函数对象,不能使用虚函数,因为参数类型是基类,而实参类型是派生类的,在传递的过程中会产生剥离问题:在对象拷贝的过程中,派生部分可能会被去掉,而仅保留基类部分。当对vector,list,deque进行元素的插入或者删除操作时,现有的元素的位置通常会被移动(拷贝)。上面提到,STL中采用的是拷贝的方法,auto_ptr对象进行拷贝时会将原来的对象所有权设置交给新对象,然后将原来对象所有权设为为NULL。原创 2023-08-18 18:00:00 · 1641 阅读 · 0 评论 -
C++学习笔记总结练习:effective 学习日志
多重继承的确有正当途径,当其中一个情节涉及”public继承某个Interface class“ 和private 继承某个协助实现的class的两相组合。对于virtual 一般是多态定义的,但是当构造函数构造子类使会先构造父类,当在构造器中调用virtual会导致调用的是父类版本的virtual,因为在构造父类时,此时编译器还不知道子类有什么成员,所以用当前版本的。drived classes内的名称会遮蔽base class内的名称,为了让遮蔽的名称重用,用using 或者转交函数。原创 2023-08-18 12:00:00 · 351 阅读 · 0 评论 -
C++学习笔记总结练习:LRU算法
这里采用双向链表的原因是:如果采用普通的单链表,则删除节点的时候需要从表头开始遍历查找,效率为O(n),采用双向链表可以直接改变节点的前驱的指针指向进行删除达到O(1)的效率。缓存不仅可以加速用户的访问,同时也可以降低服务器的负载和压力。像浏览器的缓存策略、memcached的缓存策略、Redis缓存策略都是使用LRU这个算法,LRU算法会将近期最不会访问的数据淘汰掉。LRU如此流行的原因是实现比较简单,而且对于实际问题也很实用,良好的运行时性能,命中率较高。原创 2023-08-17 12:00:00 · 254 阅读 · 0 评论 -
C++学习笔记总结练习:时间类 MyTime的实现
/ 小时// 分钟// 秒钟public:// 默认构造函数Time() {hours = 0;// 带参构造函数hours = h;// 获取小时// 获取分钟// 获取秒钟// 设置时间hours = h;// 重载输出运算符return os;Time t2;return 0;原创 2023-08-17 09:30:00 · 544 阅读 · 0 评论 -
C++学习笔记总结练习:复数类complex的实现
private:// 实部// 虚部public:// 默认构造函数real = 0.0;// 带参构造函数real = r;// 获取实部// 获取虚部// 重载加法运算符// 重载减法运算符// 重载乘法运算符// 重载输出运算符return os;return 0;在上面的示例中,Complex类封装了两个私有成员变量real和imaginary,分别表示复数的实部和虚部。原创 2023-08-16 15:47:22 · 1975 阅读 · 2 评论 -
C++学习笔记总结练习:智能指针编程实现
【代码】C++学习笔记总结练习:智能指针编程实现。原创 2023-08-15 00:45:00 · 202 阅读 · 0 评论 -
C++学习笔记总结练习:内存分配器编程实现
除了默认分配器和自定义分配器,还有一些第三方库提供了高级的内存分配器。例如,Google的tcmalloc、Facebook的jemalloc等都是常用的第三方内存分配器。开发人员可以使用默认分配器、自定义分配器或第三方库提供的分配器来满足程序的内存需求。在C++中,有几种内存分配器可供选择,包括操作系统提供的默认分配器、自定义分配器和第三方库提供的分配器。默认情况下,C++使用操作系统提供的默认分配器来分配和释放内存。这些分配器通常是基于堆的,使用malloc()和free()等函数来分配和释放内存。原创 2023-08-14 17:45:00 · 380 阅读 · 0 评论 -
C++学习笔记总结练习:并发控制-线程同步与数据访问-mutex和lock
future的目的是处理线程的返回值和异常。因为它只能携带一次数据返回。这个明显是解决生产者和消费者问题。或者读、写问题。因为资源有数量限制。而之前的mutex只有互斥限制,也就是说,mutex与lock只能控制数量为1的消费者互斥访问问题。condition variable控制数量大于1 的生产和消费问题。原创 2023-08-14 08:30:00 · 397 阅读 · 0 评论 -
C++学习笔记总结练习:并发机制
标准库提供了一些工具来获取异步任务(即在单独的线程中启动的函数)的返回值,并捕捉其所抛出的异常。这些值在共享状态中传递,其中异步任务可以写入其返回值或存储异常,而且可以由持有该引用该共享态的 std::future 或 std::shared_future 实例的线程检验、等待或是操作这个状态。提供了异步通信的方法。使用thread启动线程的话,需要手动设置promise实现信号发出,接触future.get的阻塞。libuv可以实现跨平台的高性能通信。事件驱动的IO主要通过第三方库实现包括以下几种。原创 2023-08-13 15:30:00 · 211 阅读 · 0 评论 -
C++学习笔记总结练习:C库整理
目录。原创 2023-08-11 15:00:00 · 261 阅读 · 0 评论 -
C++学习笔记总结练习:动态内存
智能指针主要用于管理在堆上分配的内存,它将普通的指针封装为一个栈对象。当栈对象的生存周期结束后,会在析构函数中释放掉申请的内存,从而防止内存泄漏。C++ 11中最常用的智能指针类型为shared_ptr,它采用引用计数的方法,记录当前内存资源被多少个智能指针引用。该引用计数的内存在堆上分配。当新增一个时引用计数加1,当过期时引用计数减一。只有引用计数为0时,智能指针才会自动释放引用的内存资源。对shared_ptr进行初始化时不能将一个普通指针直接赋值给智能指针,因为一个是指针,一个是类。原创 2023-08-11 07:30:00 · 216 阅读 · 0 评论 -
C++学习笔记总结练习: lambda表达式
形式。仅仅是形式上不同的函数。capture list捕获列表是外部的局部变量的列表,捕获后可以在函数内部使用。没有参数和返回值的lambda表达式auto l=[]{lambda表达式的定义完成后直接调用}();有参数的lambda表达式有返回值的lambda表达式return m+n;原创 2023-08-10 20:00:00 · 362 阅读 · 0 评论 -
C++学习笔记总结练习:并发编程与多线程
future的目的是处理线程的返回值和异常。因为它只能携带一次数据返回。这个明显是解决生产者和消费者问题。或者读、写问题。因为资源有数量限制。而之前的mutex只有互斥限制,也就是说,mutex与lock只能控制数量为1的消费者互斥访问问题。condition variable控制数量大于1 的生产和消费问题。原创 2023-08-09 19:00:00 · 254 阅读 · 0 评论 -
C++学习笔记总结练习:数值方法
随机数分布。随机数的分布方式distribution随机数引擎。产生随机数engin。随机性的源头随机数生成器。由一个随机数引擎和一个随机数分布,组合成一个随机数生成器。原创 2023-08-10 12:00:00 · 233 阅读 · 0 评论 -
C++学习笔记总结练习:IO详解
针对常用的字符提供了以下IO方式。也可以自己根据定义实现二进制IO的过程。定义于头文件cin\wcin从标准 C 输入流 stdin 中读取(全局对象)cout\wcout写入到标准 C 输出流 stdout(全局对象)cerr\wcerr写入到标准 C 错误流 stderr, 无缓冲(全局对象)clog\wclog写入到标准 C 错误流 stderr很关键。关于输入输出流的方法。原创 2023-08-09 09:15:00 · 183 阅读 · 0 评论 -
C++学习笔记总结练习:正则表达式
目录参考文献。原创 2023-08-08 10:00:00 · 481 阅读 · 0 评论 -
C++学习笔记总结练习:string字符串容器和泛型算法
这三种初始化的恶魔是,在assign、find、append、replace、insert函数中,也在使用。就如同顺序容器中的初始化方法,在顺序容器的其他的操作中也是通用的。string 类有一些查找子串和字符的成员函数,它们的返回值都是子串或字符在 string 对象字符串中的位置(即下标)。所有的字符串查找方法重载了以下四种类型:pos表示开始查找的位置。n表示查找匹配的次数。insert 成员函数可以在 string 对象中插入另一个字符串,返回值为对象自身的引用。参考 字符串find。原创 2023-08-07 19:42:31 · 369 阅读 · 0 评论 -
C++/C--动态二维数组的内存分配与释放:malloc 和 free&&new 和 delete
/分配每个指针所指向的数组。//分配每个指针所指向的数组。//分配每个指针所指向的数组。//一次性分配所有空间。//一次性分配所有空间。要注意配对使用,即有多少个。,这样才可以避免内存泄漏!转载 2022-11-05 23:13:43 · 963 阅读 · 0 评论
分享