
c++
文章平均质量分 74
onnx
程序员的每日一拱!
平常喜欢分享项目实践经验,知识点,实战项目,欢迎留言,评论,沟通交流,一起进步。
吾等采石之人,当心怀大教堂之愿景。
愿我们奔赴在自己的热爱里!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
4字节十进制数 转为 IPV4点分十进制 -- C++语言实现
【代码】4字节十进制数 转为 IPV4点分十进制 -- C++语言实现。原创 2024-06-22 16:30:00 · 397 阅读 · 0 评论 -
C++必会100题精(面试笔试有用)
5.已知一个类X, _____C_____是定义指向类X成员函数的指针,假设类有3个公有成员: void f1(int), void f2(int)和int a.54.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将( A )9.已知f1(int)是类X的公有成员函数,p是指向成员f1()的指针,采用它赋值, ____ B ______是正确的.8.已知p是一个指向类X数据成员m的指针,s是类X的一个对象;原创 2024-06-22 12:15:00 · 1107 阅读 · 0 评论 -
使用vscode
进入 ubantu :点击 ubantu software进入后就可以看见这个点击搜索图标 输入code就可以查到了进入到vs code中 点击插件的图标, 下载c/c++的插件,chinese语言插件点击终端就可以会弹出bash的终端就可以使用Linux一下操作命令了点击文件 , 打开文件夹 , 找到自己的目录我拿test目录做实验 然后点击 OK。原创 2024-06-03 18:45:00 · 1120 阅读 · 0 评论 -
智能指针详解及示例代码--看了就懂
一方面, 当对象A不再使用时, 就可以释放它所占用的内存了, 但是由于对象B仍然在引用着它, 因此, 此时对象A就不能被释放;另一方面, 当对象B不再使用时, 就可以释放它所占用的内存了, 但是由于对象A仍然在引用着它, 因此, 此时对象B也不能被释放。(Weak Pointer), 其中, 轻量级指针使用了简单的引用计数技术, 而强指针和弱指针使用了强引用计数和弱引用计数技术。最容易出错的地方就是指针, 一般为忘记释放指针指向的对象所占用的内存, 或者使用了无效指针。来维护对象的生命周期了。原创 2024-04-30 10:45:00 · 1203 阅读 · 0 评论 -
c++语言核心及进阶
默认构造函数默认构造函数要么没有参数,要么所有参数都有默认值才行。如果类为定义任何构造函数,编译器将自动定义一个默认构造函数用来创建对象。如果派生类构造函数的成员初始化列表没有显式的调用基类构造函数,则编译器将使用基类的默认构造函数来构造派生类对象的基类部分。拷贝构造函数将新对象初始化为一个已存在的对象按值将对象作为参数传递给函数函数按值类型返回对象编译器临城临时对象编译器会默认提供拷贝构造函数,但不提供具体定义。当类中有动态内存分配的情况时需要自定义拷贝构造函数赋值运算符。原创 2023-11-21 14:36:37 · 382 阅读 · 0 评论 -
C++学习笔记总结练习:多态与虚函数
重定义:基类中没有声明函数是虚函数。派生类中对普通函数进行了重定义。只是作用域上的覆盖,没有触发多态和动态绑定。重定义不能触发动态多态。无论指针或引用绑定的是什么对象,都会根据指针或引用的类型,调用该类型的函数。而不是使用虚指针查找虚函数表。只有调用虚函数的时候,才会去根据对象的虚函数指针,查找类中的虚函数表。return a;return a;int real_ex(){//重定义A的函数return b;原创 2023-09-02 20:31:31 · 626 阅读 · 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 · 183 阅读 · 0 评论 -
C++学习笔记总结练习:类与对象
面向对象程序设计(Object-Oriented Programming,简称 OOP)是一种编程范式,它将程序组织为对象的集合,这些对象通过相互之间的交互来完成任务。在面向对象编程中,对象是程序的基本单元,具有属性(数据)和方法(行为)。面向对象程序设计的核心概念包括:类(Class):类是对象的模板或蓝图,描述了对象的属性和方法。它定义了对象的结构和行为。例如,一个 “汽车” 类可以定义汽车的属性(如颜色、品牌、速度)和方法(如加速、刹车)。原创 2023-08-31 09:00:00 · 318 阅读 · 0 评论 -
C++学习笔记总结练习:运算符重载两种方式
运算符时具有特殊名字的函数:由关键字operator和气候定义的运算符共同组成。可以被重载的运算符。原创 2023-08-30 19:30:00 · 1144 阅读 · 0 评论 -
C++学习笔记总结练习:构造函数和析构函数
析构函数与构造函数对应,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。类的成员函数,由拨浪号接类名构成,没有返回值,不接受参数。不能被重载,一个类只有一个析构函数。声明一个符号。如果有extern,则表示变量在外部顶底,链接其他问件事,匹配外部定义的变量。分配内存、指定变量名。原创 2023-08-30 08:30:00 · 213 阅读 · 0 评论 -
C++学习笔记总结练习:C内存分配与初始化
然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有满足用户要求的片段了。于是,malloc函数请求延时,并开始在空闲链上,检查各个内存片段,对他们进行整理,将相邻的小空闲块合并成较大的内存块。malloc分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间。功能:返回一个指向n个连续字符存储单元的指针。原创 2023-08-29 16:45:00 · 283 阅读 · 0 评论 -
C++学习笔记总结练习:数组参数
函数使用循环遍历数组,并打印每个元素。在 main 函数中,我们定义了一个整数数组 myArray,并计算数组的大小。传递数组:当你调用带有数组参数的函数时,你可以传递一个数组作为实际参数。数组大小:在函数中,你可以使用数组参数来访问数组元素,并使用数组大小来遍历数组。然而,在 C++ 中,数组参数的大小信息在函数内部是不可用的,因此通常需要额外的参数来传递数组的大小。数组指针:在函数中,数组参数实际上是一个指向数组首元素的指针。这意味着你可以将一个数组作为函数的参数,以便在函数内部对数组进行操作或访问。原创 2023-08-29 10:30:00 · 382 阅读 · 0 评论 -
C++学习笔记总结练习:new和delete使用及讲解
参考文献new operator/delete operator就是new和delete操作符。而operator new/operator delete是全局函数。原创 2023-08-28 09:42:53 · 385 阅读 · 0 评论 -
C++学习笔记总结练习:字符串类实现
使用构造函数初始化字符串的另外两种方式,动态指针+拷贝构造函数 )查找某字符串是否位于指定的字符串中(采用暴力查找)缺省构造函数对字符串的初始化MyString()实现头文件的封装:MyString.h。析构函数,释放动态申请的字符串空间。重载下标运算符 [],索引输出。字符串中指定两个字符的交换。重载输出运算符原创 2023-08-28 19:30:00 · 327 阅读 · 2 评论 -
C++学习笔记总结练习:内存对齐
编译器为程序中的每个“数据单元”安排在适当的位置上。原创 2023-08-28 09:40:30 · 425 阅读 · 0 评论 -
C++学习笔记总结练习:数组离散化的方法
ai。原创 2023-08-27 15:00:00 · 440 阅读 · 0 评论 -
C++学习笔记总结练习:多态的三种实现方式
重定义是在不同作用域内的(一个在父类一个在子类),只要函数名相同,且不构成重写,均称之为重定义。原创 2023-08-27 09:30:00 · 2403 阅读 · 0 评论 -
C++学习笔记总结练习:动态内存管理实现
因为 malloc 只负责开辟空间,并不会调用对象的构造函数对其成员变量进行初始化,那么内部的成员变量是没有分配空间的,当我们调用 delete 时,delete会先对对象进行资源清理,但是对象里的资源 malloc 并没有给其分配,所以我们清理的时候是非法的操作。对于内部有资源的自定义类型,使用 new 开辟的空间使用 free 释放,会造成内存泄漏,因为 free 并不会调用析构函数清理对象的资源,因此会造成资源泄漏。对于内置类型:如果没有配合使用,可能不会出现什么问题。原创 2023-08-26 10:00:00 · 234 阅读 · 0 评论 -
C++学习笔记总结练习:nullptr、NULL、0
参考文献。原创 2023-08-25 18:30:00 · 193 阅读 · 0 评论 -
C++学习笔记总结练习:初始化的方法
参考文献。原创 2023-08-25 11:45:00 · 206 阅读 · 0 评论 -
C++学习笔记总结练习:强制类型转换
static_cast 相当于传统的 C 语言里的强制转换,该运算符把 expression 转换为 new_type 类型,用来强迫隐式转换,例如 non-const 对象转为 const 对象,编译时检查,用于非多态的转换,可以转换指针及其他,但没有运行时类型检查来保证转换的安全性。new_type 必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,再把该整数转换成原类型的指针,还可以得到原先的指针值)。原创 2023-08-24 20:00:00 · 191 阅读 · 0 评论 -
C++学习笔记总结练习:字符串转换_数组转换_数组转 vector_vector 转数组
由于 vector 内部的数据是存放在连续的存储空间,vector 转数组事实上只需要获取 vector 中第一个数据的地址和数据的长度即可。如果仅仅是传参,无需任何操作,直接传地址即可,如果要进行数据复制,可以借用内存拷贝函数“memcpy”。数组也是 C++中很重要的复杂类型之一。vector 是对象类型。C++支持数组的迭代器运算。建议尽量使用标准库类型,而非数组。原创 2023-08-24 09:00:00 · 262 阅读 · 0 评论 -
C++学习笔记总结练习:标准库-头文件
头文件描 述定义重载的关系运算符,简化关系运算符的写入,它还定义了pair类型,该类型是一种模板类型,可以存储一对值。这些功能在库的其他地方使用定义了许多函数对象类型和支持函数对象的功能,函数对象是支持operator()()函数调用运算符的任意对象给容器、管理内存的函数和auto_ptr模板类定义标准内存分配器支持系统时钟函数头文件描 述原创 2023-08-22 14:00:00 · 247 阅读 · 0 评论 -
C++学习笔记总结练习:高低地址与高低位
主机采用大端还是小端表示数据由CPU的架构决定,如果两个主机只见交互数据,但是字节序表示不同,需要同化.可以把主存看成一本空白的作业本,你现在要在笔记本上记录一些内容,他的页码排序是。.如果把上边的存储方式反过来,内存中的高地址存储工资中的高位,则称为。内存中的低地址存储工资中的高位这种方式称为。原创 2023-08-22 09:00:00 · 338 阅读 · 0 评论 -
C++学习笔记总结练习:C++内存分配
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ggcplZx-1692237195837)(image/2021-03-04-10-30-35.png)]原创 2023-08-23 08:00:00 · 158 阅读 · 0 评论 -
C++学习笔记总结练习:多文件编程的实例
使用条件编译控制被引入的文件,防止被多次编译。条件编译解决的是,预处理阶段,某一个文件,多次包含同一个文件。例如,b包含a,c包含a,c又包含b;#include的预处理阶段,c包含了两段a的代码,那么编译过程会出现include的错误。所以在所有的头文件中,应当加上条件编译,在给别人使用过程中,防止被直接或间接包含多次。原创 2023-08-23 05:00:00 · 230 阅读 · 0 评论 -
C++学习笔记总结练习:全局变量和静态变量和static
在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员(这点非常重要)。如果静态成员函数中要引用非静态成员时,可通过对象来引用。从中可看出,调用静态成员函数使用如下格式:::();:在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。:静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。原创 2023-08-23 09:00:00 · 214 阅读 · 0 评论 -
C++学习笔记总结练习:C++完美转发
完美转发就是将函数实参以其原本的值类别转发出去。转发值类别int i;bar(i);bar(1);在这里,变量 i 经历了两次转发,所以我们需要先后解决这两次转发的值类别问题。用户调用 bar 时,参数的值类别问题当用户以左值表达式调用 bar 时,确保其实例化(Instantiation)的形参类型为左值引用当用户以右值表达式调用 bar 时,确保其实例化的形参类型为右值引用。bar 调用 foo 时,参数的值类别问题当 bar 的形参类型为左值引用时,将其以左值转发给 foo。原创 2023-08-22 09:30:00 · 247 阅读 · 0 评论 -
C++学习笔记总结练习:C++移动语义
参考文献。原创 2023-08-21 16:00:00 · 183 阅读 · 0 评论 -
C++学习笔记总结练习:C++左值右值
函数内的局部对象做为返回值返回(不是引用)的时候会发生拷贝(拷贝为临时对象返回)函数形参为传值的时候,会发生拷贝构造一个对象以另外一个对象进行初始化的时候对象的频繁构造是程序的开销,特别是当对象内部有堆上内存(比如有 new 出来的成员)的时候,每次拷贝构造的时候都需要用 new 申请一块内存,造成性能的降低。对于情况2,好习惯是如果函数参数是只读的(也即不会在程序内进行修改),传引用作为参数,也即 pass_A_by_refrence(const A &a);对于情况1,编译器会为我们进行优化。原创 2023-08-20 16:00:00 · 217 阅读 · 0 评论 -
C++学习笔记总结练习:STL源码解析
STL提供六大组件,彼此可以组合套用容器:vector,deque,list,set,map算法:sort,search,copy,erase迭代器:扮演容器和算法之间的胶合剂,是所谓的“泛型指针”仿函数:行为类似函数,可作为算法的某种策略(policy)。从实现角度来看,仿函数是一种重载operator()的class或class template。一般函数指针可视为狭义的仿函数。配接器:一种用来修饰容器或仿函数或迭代器接口的东西。配置器:负责空间配置和管理。原创 2023-08-20 10:00:00 · 699 阅读 · 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 · 249 阅读 · 0 评论 -
C++学习笔记总结练习:Linux下vscode编程
学习linux下通过vscode进行c++编程的学习总结,知识内容包括使用g++,cmake编译,已经最后在vscode上对代码进行调试。原创 2023-08-19 12:00:00 · 457 阅读 · 0 评论 -
C++学习笔记总结练习:EffectiveSTL
标准容器:指的是c++标准化后的容器,遵从c++的标准,不同的编译器都支持,代码移植能力强。对于多态的函数对象,不能使用虚函数,因为参数类型是基类,而实参类型是派生类的,在传递的过程中会产生剥离问题:在对象拷贝的过程中,派生部分可能会被去掉,而仅保留基类部分。当对vector,list,deque进行元素的插入或者删除操作时,现有的元素的位置通常会被移动(拷贝)。上面提到,STL中采用的是拷贝的方法,auto_ptr对象进行拷贝时会将原来的对象所有权设置交给新对象,然后将原来对象所有权设为为NULL。原创 2023-08-18 18:00:00 · 1565 阅读 · 0 评论 -
C++学习笔记总结练习:effective 学习日志
多重继承的确有正当途径,当其中一个情节涉及”public继承某个Interface class“ 和private 继承某个协助实现的class的两相组合。对于virtual 一般是多态定义的,但是当构造函数构造子类使会先构造父类,当在构造器中调用virtual会导致调用的是父类版本的virtual,因为在构造父类时,此时编译器还不知道子类有什么成员,所以用当前版本的。drived classes内的名称会遮蔽base class内的名称,为了让遮蔽的名称重用,用using 或者转交函数。原创 2023-08-18 12:00:00 · 314 阅读 · 0 评论 -
C++学习笔记总结练习:LRU算法
这里采用双向链表的原因是:如果采用普通的单链表,则删除节点的时候需要从表头开始遍历查找,效率为O(n),采用双向链表可以直接改变节点的前驱的指针指向进行删除达到O(1)的效率。缓存不仅可以加速用户的访问,同时也可以降低服务器的负载和压力。像浏览器的缓存策略、memcached的缓存策略、Redis缓存策略都是使用LRU这个算法,LRU算法会将近期最不会访问的数据淘汰掉。LRU如此流行的原因是实现比较简单,而且对于实际问题也很实用,良好的运行时性能,命中率较高。原创 2023-08-17 12:00:00 · 222 阅读 · 0 评论 -
C++学习笔记总结练习:时间类 MyTime的实现
/ 小时// 分钟// 秒钟public:// 默认构造函数Time() {hours = 0;// 带参构造函数hours = h;// 获取小时// 获取分钟// 获取秒钟// 设置时间hours = h;// 重载输出运算符return os;Time t2;return 0;原创 2023-08-17 09:30:00 · 480 阅读 · 0 评论 -
C++学习笔记总结练习:复数类complex的实现
private:// 实部// 虚部public:// 默认构造函数real = 0.0;// 带参构造函数real = r;// 获取实部// 获取虚部// 重载加法运算符// 重载减法运算符// 重载乘法运算符// 重载输出运算符return os;return 0;在上面的示例中,Complex类封装了两个私有成员变量real和imaginary,分别表示复数的实部和虚部。原创 2023-08-16 15:47:22 · 1876 阅读 · 2 评论 -
C++学习笔记总结练习: 字符串类MyString的实现
private:// 用于存储字符串的字符数组// 字符串的长度public:// 默认构造函数// 带参构造函数// +1 用于存储字符串结束符'\0'// 拷贝构造函数// 析构函数// 获取字符串长度// 获取字符串内容// 重载赋值运算符if (this!// 重载加法运算符return 0;原创 2023-08-16 15:44:28 · 1448 阅读 · 0 评论 -
C++学习笔记总结练习:智能指针编程实现
【代码】C++学习笔记总结练习:智能指针编程实现。原创 2023-08-15 00:45:00 · 180 阅读 · 0 评论