C++
文章平均质量分 77
逮虾户肉丝
这个作者很懒,什么都没留下…
展开
-
Linux下静态库和动态库
笔记搬运工一、库的科普1、什么是库文件?库是二进制文件,是源代码文件的另一种表现形式,是一些功能相近或相似的函数集合体;2、使用库的好处提高代码可重用性,提高程序的健壮性(优秀的库往往是资深程序员编写的,久经考验)可减少开发者的开发代码量,缩短开发周期;3、库制作完成后, 如何给用户使用头文件—包含了库函数的声明库文件—包含了库函数的代码实现 注意: 库不能单独使用, 只能作为其他执行程序的一部分完成某些功能, 也 就是说只能被其他程序调用才能使用.库可分静态库(sta..原创 2022-03-09 14:04:58 · 279 阅读 · 1 评论 -
编译原理之GCC基本使用
一、从源代码到可执行文件大概发生了什么?一、 编译程序(此处内容来自某大佬博客) 做了部分修改1、 编译器是一种将源语言(即用某种程序设计语言写成的)程序翻译为目标语言(即用二进制数表示的伪机器代码写成的)程序的翻译程序,相当于在程序员和CPU之间翻译人员。后者在windows操作系统平台下,其文件的扩展名通常为.obj;在Linux下文件扩展名是.o。该文件通常还要经过进一步的连接,生成可执行文件(机器代码写成的程序,文件扩展名为.exe)。通常有两种方式进行这种翻译,一种是编译go/c/c++等,直原创 2022-03-08 16:35:40 · 394 阅读 · 0 评论 -
函数返回值的方式
- [ ] 2022/3/1(此处讨论的不是返回值和返回指针/引用的情况,而是当返回不同数据长度,编译器是如何指定返回方式的不同编译器,处理的情况不同,下面的分析是基于VS2019的msvc编译器:返回值长度小于4字节,通过一个寄存器带出被调函数的栈空间;返回值长度在4到8字节之间,通过两个寄存器带出;返回值长度大于8字节,通过产生临时量带出,因为寄存器已经没有足够的内存存放了;另外,该临时量是在函数被调用前就创建好,把其地址压入栈中,函数被调用时对临时量赋值好,以下开始分析:1)函数返回宽原创 2022-03-01 16:54:16 · 529 阅读 · 0 评论 -
函数模板与类模板的理解
一、什么是模板?1.1、一语蔽之:把函数或类要处理的数据类型和返回的数据类型参数化,使得相同的表达逻辑可以处理不同的数据对象,得到不同类型结果的通用行为,这就是模板;1.2、当工厂里面要生产一把刀,需要将滚烫的铁水倒入到模具里面,然后再经过锤炼就得到一把锋利的刀。函数模板和模板函数正是这样的一组关系,函数模板相当于做刀的模具,而模板函数就是我们得到的刀。1.3、模板的益处:我认为,模板一方面提高了程序编写的效率,大大降低了项目的代码冗余率;另一方面,给用户提供了更丰富的功能,往往一个接口就可以处理多原创 2022-02-18 15:52:09 · 434 阅读 · 0 评论 -
对多态的理解
一、静态联编和动态联编1、联编是指一个程序模块,代码之间的相互关联的过程2、静态联编是程序的匹配、连接在编译阶段实现,也称为早期匹配或早期绑定;例如,函数重载就是静态联编的一种3、动态联编是指程序联编在运行时才进行,也称为晚绑定;switch语句和if语句是动态联编的例子;二、什么是多态以及多态的实现条件1、三连问:定义一个空的类型,里面没有任何的成员变量或者成员函数,对这个类型进行 sizeof 运算,结果是?结果为1,空类型的实例不包含任何信息,按道理sizeof()会得到0;但空类型原创 2022-02-16 21:20:50 · 720 阅读 · 0 评论 -
虚继承基本原理
一、可以先看看这个链接黑马C++课程里面的例子讲解二、从内存布局看虚继承原理1、普通类的菱形继承:虚基类的成员会被拷贝两份,一模一样的,导致了空间的浪费;class A {public: int age=10;};class B: public A {public: int b;};class C : public A {public: int c;};class D : public B, public C {public: int d;};2、基于虚基类的菱形原创 2022-02-16 13:45:35 · 9344 阅读 · 1 评论 -
对句柄的理解
一、句柄描述1)通过一个简单的数据拎起一大堆数据,这个简单的数据就叫做句柄,即Handle;2)指针也是一种句柄,因为用户可以通过它存储的32位地址值,可以访问到背后大量数据,如通过数组指针访问数组,通过对象指针访问对象等;但由于指针存储的是可以操作内存的地址,这是与句柄不一样的地方(句柄只是个编号,不与地址对应,也不是地址);3)windows系统有许多的内核对象程序,如打开的文件,创建的线程,程序的窗口等等;这些对象占内存空间较大,当需要传递这些对象程序的时候,直接采用拷贝传递将导致效率低下,所以原创 2022-01-21 12:35:42 · 187 阅读 · 0 评论 -
private和public
一、结构体/类的定义和实现分离,代码可读性更强(非必须)//xxx.h头文件struct Test{ int x; int y; int z; void Init(int x,int y,int z); void Function1(); void Function2(); void Function3();}//xxx.cpp#include<stdio.h>#include"structure.h"void Test::Init(int x, int y,原创 2022-01-02 21:37:48 · 2813 阅读 · 0 评论