- 博客(17)
- 收藏
- 关注
原创 【C++】编译器如何识别重载函数
我们都知道,函数重载即一个函数拥有了多个版本,我们使用时可以通过不同的数据类型区分我们调用的时哪一个重载函数,但编译器编译链接阶段对函数的调用时通过在符号表中寻找唯一名称来确定地址,c++时怎么解决了符号表中不能重命呢?不同的编译器处理该问题底层处理不同,但逻辑大多相同,如下所说c++通过名称修饰区分解决当编译器遇到函数重载时,它需要找到一种方法来区分这些重载函数。编译器内部会对每个函数进行签名或标识,这个签名是根据函数的参数列表生成的。这个签名是唯一的,因为它考虑了参数的数量、类型和顺序。
2024-02-18 23:46:32
682
原创 【C++】c++中的函数模板
c语言中没有提供模板,要求实现一个Add函数,对于不同的数据类型可能存在Add_int(),Add_double()等函数,这种重复操作比较的低效,c++提供了函数重载的功能,尽管函数体内容相同,但依旧要对函数体去进行多次实现,以面对不同的数据类型,如果需要重载的函数非常复杂,这将会造成比较大的浪费,c++提供了模板来解决这个问题概念:函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。
2024-02-18 11:40:49
931
原创 【C++】类的隐式类型转换
C++ 类的隐式类型转换是指当一个类定义了适当的构造函数或转换函数时,可以在需要时自动进行类型转换,而无需显式调用转换函数或构造函数。这使得代码更具灵活性和简洁性。下面是一些关于类的隐式类型转换的示例:public:MyString(const char* str) : data(str) {} // 构造函数,将 const char* 转换为 MyStringprivate:// 隐式类型转换:const char* 转换为 MyString// 输出 "Hello, World!
2024-02-13 12:13:00
971
1
原创 【C++】new和delete深度解析
1.new会对自定义类型申请的空间进行特殊处理,在new的过程中会调用自定义类型的构造函数。2.new自定义类型是在堆上申请空间,系统不会自己释放空间,所以需要用户使用delete手动释放空间。ps:查看new调用自定义类型构造的现象。
2023-11-10 21:45:08
2819
4
原创 【c++】c++类的大小的计算和this指针
每一个类在内存中都会有一个共享的公共代码区来存放成员函数,类中的每一个对象都共享连接这片区域,而不是将其存放在对象里,这样有利于编译器减少内存空间浪费,没有必要为每一个对像单独开辟一片空间存放成员函数。c++的类由成员变量和成员函数等组成,不同于c中的结构体只有成员变量,但类大小的计算方法和结构体的计算方法是一样的,总的来说,类大小的一样是用内存对齐的方式来计算的,(事情的表象好像是我们直接在类里面的函数可以对私有的成员变量进行更改,但实际这一切的实现都是this指针的功劳,
2023-11-06 17:18:39
210
原创 学福爱牛牛的博客之旅启航
学福爱牛牛的第一篇博客,内容包括:自我介绍、学习安排、学习目标、时间安排等,欢迎同志共勉观看,欢迎大佬点拨指正自我介绍:19岁无所事事的男子大学生,目前大二下(大学时间过得真快,但感觉又没学到什么)热爱足球、骑行;尤为擅长Ctrl+C与Ctrl+V,目标:学点技术,养活自己,然后再去追求梦想高中时期:也不怕丢面啊,哥们我是一个中专生,初中没有好好学习,等回过头来时,发现已经进入了县城里的中专。
2023-04-01 12:16:04
1273
14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人