- 博客(10)
- 收藏
- 关注
原创 设计模式,用代码简单解析
面向对象的设计规则主要是高内聚低耦合。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。
2025-07-17 20:21:44
956
原创 VS错误: 无法打开 xxxxxxxxxxx 进行写入
上一次运行时未正确关闭控制台,后台.exe控制台程序还在运行,可以打开项目.exe所在位置(一般Debug文件下),删除再重新调试。为预防这个错,可配置调试选项,点击,工具>选项>调试,勾选“在调试停止时自动关闭控制台”。
2025-07-08 15:29:17
633
原创 C++大全,百科全书级别的(中)
B类的对象在最开始有一个指针大小的空间记录自己类等函数的入口地址,所以传给A的时候也是知道自己函数入口地址的,是用派生类的函数地址覆盖父类的地址,那么再用父类的指针去找成员函数的时候,虚函数表的函数地址已经是子类的地址了,所以可以找到相应子类的虚函数,也就是重写之后的。类的组合可以在横向实现代码的复用,在一个类里直接使用别的类,不需要继承(纵向关系),是一种横向的关系,在实际开发中用类的组合更常见,不但可以用私有成员,且不会让组合的类有太多的包袱,继承的类最好不要超过4层,不然会造成很大的空间开销。
2025-07-07 20:46:42
839
原创 C++大全,百科全书级别的(上)
c的结构体封装的都是变量,不能封装函数,没有一个物体的动作,只能用一堆函数去处理。c++的面向对象编程很好的解决了这一点。c++支持泛型编程,对于C语言c++这类静态语言来说不太支持动态修改类型,泛型机制可以用一个函数,一套处理机制处理多种类型的变量,也能函数重名。c适合:驱动开发系统编写算法c++适合:游戏开发,客户端,三维游戏,性能高服务器开发,互联网公司的服务器,大部分linux、unix嵌入式物联网VR以及人工智能增加面向对象编程c++支持泛型编程c++支持函数重载。
2025-07-07 20:24:09
930
原创 ubuntu16.4配置gtk编译环境
GTK(全称 GTK+,GIMP Toolkit)是一个跨平台的图形用户界面(GUI)工具包,最初由 Peter Mattis 和 Spencer Kimball 为 GIMP(GNU 图像处理程序)开发,如今已成为自由软件领域中最常用的 GUI 工具包之一。它基于 C 语言开发,并提供了对多种编程语言的绑定,如 C++、Python、Java 等。Cairo:提供 2D 图形渲染引擎,支持抗锯齿、渐变、路径绘制等。GTK + 核心:提供窗口、控件、事件循环等基础功能。修改环境变量:永久生效。
2025-07-07 14:16:37
393
原创 C指针 ----下篇 (超详细,看完就懂)
概念:数组指针是指向数组的指针,本质上还是指针特点:①先有数组,后有指针②它指向的是一个完整的数组,一片地方,不同与指针变量可以指向数组元素。实参与形参都可以是字符数组实参用字符数组,形参用字符指针形参和实参都是指针变量(在函数内部不能对字符串常量内的字符做修改//在函数内部不能对字符串中的字符做修改,否则报段错误实参是指针类型,形参是字符数组(在函数内部不能对字符串常量中的字符做修改//在函数内部不能对字符串中的字符做修改,否则报段错误注意。
2025-03-20 21:07:55
737
原创 01背包 二维数组解法
条件判断j >= weight[i]是正确的,因为它确保了在当前总容量j下,物品i可以被放入背包,而动态规划的状态转移已经考虑了所有可能的子问题组合,无需担心剩余容量的实时更新问题。用户的问题可能源于对动态规划中状态定义的理解偏差,需要明确j是总容量而非剩余容量,并且每个状态都是独立计算的,覆盖了所有可能的物品选择组合。这里的j-weight[i]实际上是考虑了在选物品i之前,背包已经使用了j-weight[i]的容量,加上当前物品的weight[i],刚好达到总容量j。这时候,我们比较不选物品i的情况。
2025-03-20 09:17:26
417
原创 标准IO基本API
滞留在缓冲区中的数据有时被称为脏数据(dirty data),脏数据的存在代表程序操作的结果与文件真实状态不一致,若未正常冲洗这些脏数据就退出程序则有可能会造成数据丢失。这三种缓冲类型,可以通过函数 setbuf()/setbuf() 来修改。缓冲(buffer)都是针对写操作而言的,缓冲的存在是为了提高写效率。fclose()函数会释放内存,不能对同一个文件多次关闭。对于普通文件而言,默认都是全缓冲类型。对于标准输出而言,默认是行缓冲的;对于标准出错而言,默认是不缓冲的;二进制、压缩包等文件会乱码。
2025-03-18 10:18:09
870
原创 系统IO函数
注意,此时这新旧两个文件描述符是可以互换的,因为它们本质上指的是同一个文件,因此它们共享文件的读写偏移量和文件的状态标签,比如使用lseek()对新文件描述符修改文件偏移量,这个操作同时影响旧文件描述符oldfd,再如,使用read()对新文件描述符读取文件部分内容后,可以继续对旧文件描述符读取后续内容。可以用dup2()将管道的读端重定向到标准输入,写端重定向到标准输出,这样可以实现父子进程的通信,而不直接操作管道的文件描述符。通过复制文件描述符,可以为每个进程提供独立的文件操作位置,避免相互干扰。
2025-03-04 14:15:21
827
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅