C++晋升之路
文章平均质量分 71
通过日常学习,记录C++学习历程
秋枫晨语
这个作者很懒,什么都没留下…
展开
-
从C语言出发新角度内核剖析C++函数重载(千字精品,附带大厂面试问题回答)
在同一个作用域中,如果有多个函数的名字相同,但是形参列表不同(参数类型不同或参数个数不同),返回值类型可同也可不同,我们称之为函数重载。最简单的对于int add(int,int) int add(float,float)就是两个因参数不同而函数重载最典型的例子。函数重载的主要优点是它提高了代码的可读性并允许代码重用。使用函数重载是为了节省内存空间、一致性和可读性。它加快了程序的执行速度代码维护也变得容易。函数重载为代码带来了灵活性。原创 2022-10-05 09:26:12 · 401 阅读 · 0 评论 -
新角度解读C++内联函数的前世今生(下)(详细必看)
将函数规模较小(即函数并不是很长,具体并没有一种准确的说法,取决于编译器内部实现),不是递归,且频繁调用的函数采用inline修饰,否则编译器会忽略掉inline特性。这里我截取了C++ primer中关于inline的建议。inline函数不建议将声明和定义分离,分离会导致链接错误。1.inline函数对于编译器只是一种建议,不同编译器关于inline函数的实现机制可能有些不同。关于这里的证明读者可以通过VS调试中反汇编自行尝试。书接上文,在下篇我们主要谈谈inline函数的某些特性。原创 2022-09-27 22:49:44 · 228 阅读 · 1 评论 -
新角度解读C++内联函数的前世今生(上)(详细必看)
首先在谈内联函数之前,我们先来讨论下C语言中是如何做的?我们必须明白一点,在C语言中是没有内联函数的存在的,那么类似于内联函数作用的是什么呢?答案是宏函数,他会在编译期间进行宏替换,达到函数的效果。那么为什么C语言中要使用宏函数呢?答案是某些函数需要频繁的调用,会消耗大量的栈帧空间,每次使用都需要调用这是非常麻烦的,效率很低下。那么需求便出现了,怎么提高效率?采用宏函数,在预编译阶段,编译器将其替换,因为少了调用的过程,没有栈帧消耗,所以效率便有了很大提高。原创 2022-09-26 16:55:46 · 289 阅读 · 0 评论 -
C++引用的超详细解释及误区纠正,不看后悔哦(下)
这就好比你借了朋友一个玩具,原先你可以使劲造,坏了就坏了,你甚至可以还回另一个相类似玩具,但在const修饰后,你就只有玩的权利,但务必保证玩具的原装性及不毁坏性,无形中你的权利被缩小了。如果我们用普通指针可以解释,就会意味着b的值可以通过解引用被修改,这显然是不可能的。在我们编写函数时,经常会发现常将const引用作为形参,这不仅仅是因为想让const修饰的值不在函数体内部被改变,而更重要的是关乎权限。答案是这样你可以接收更大范围的数值,比如常量,因为其具有常量只读属性,所以只能用小权限来接收小权限。原创 2022-09-25 08:22:45 · 297 阅读 · 0 评论 -
C++引用的超详细解释及误区纠正,不看后悔哦(中)
书接上文,这次我想向大家谈一谈关于函数引用返回的问题。原创 2022-09-24 17:12:49 · 234 阅读 · 0 评论 -
C++引用的超详细解释及误区纠正,不看后悔哦(上)
基于C语言的指针,C++将其封装并创建出新的类型--引用。熟悉C语言的小伙伴们会发现,在C语言中指针的学习可以说是非常痛苦的,不仅要写对取地址后正确的数据类型,在解引用时还要仔细思考解引用后的对象,这是非常麻烦的。此时b就相当于是a的别名,b和a共同指向一块相同的内存空间,也就是说a和b都可以操纵这块内存空间进行修改。2.引用的值不可修改,借用上面的代码:如果你写出int c=30;这并不代表现在b从a的引用转变为对c的引用,而是代表对将c的值赋给a。首先,引用的基本格式是----类型&原创 2022-09-24 15:12:59 · 259 阅读 · 0 评论 -
C++命名空间的形象化解释(详细)
但与此同时,又会面临新的问题,你又一次打开了所有的东西,那么变量冲突的问题可能会出现,你的一个新变量命名很可能会与已开锁的变量名重复,因为你并不知道namespace包含什么变量,将其开锁可能会重复。答案是using std::cout,这相当于是局部开锁,仅仅对你所使用的的东西进行开锁,也就避免了上述的所有问题,因为你不会对一个新变量命名为以开锁的变量名,它会显式地告诉你命名重复。形象化的来说,命名空间就好像给你所写的东西加了一把锁,当你每次去使用时,必须使用钥匙,那么什么是钥匙呢?原创 2022-09-24 08:20:49 · 271 阅读 · 2 评论