![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 76
星星典典
认真学习,脚踏实地写博文。欢迎大家的交流指教
展开
-
C++内联命名空间和嵌套命名空间简化语法
首先,我们简单回顾下命名空间的作用。在开发一个大型项目过程中,会有很多开发人员参与开发,也会引入很多第三方库,项目代码引用了同名的类和函数无法避免。这个时候使用命名空间来区分不同的类和函数就可以解决冲突的问题。例如C++11提出了内联命名空间的概念。被声明为内联的命名空间,可以将其所有成员导出到父命名空间。使用一个例子具体说明:将上述v2改为内联命名空间,即在v2之前添加inline声明即可,其他不用修改这样修改之后,使用v2中成员的时候就可以不用再指定v2命名空间了。原创 2023-06-24 17:33:54 · 554 阅读 · 0 评论 -
c++ auto学习笔记
在C++11中赋予auto的意义是:在声明变量时,根据初始化表达式自动推断该变量的类型。声明函数时作为函数返回值的占位符(用在函数返回类型后置的情况)。如。原创 2023-06-24 16:05:31 · 820 阅读 · 0 评论 -
C++万能引用和完美转发
有的时候我们需要既能引用左值,又能引用右值的情况。并且不想使用常量左值引用(既能引用左值,又能引用右值),因为其具有常量性。这时,我们就需要实现一个万能引用即可。请见如下2组例子上面代码中m和x为右值引用毋庸置疑,而非常相似的n和y都是万能引用。因为在推导过程中,如果初始化的对象是左值,则其被推导为左值引用;初始化的对象是右值,则其被推导为右值引用。万能引用能够实现上诉的工作,是因为应用到了引用折叠。原创 2023-05-05 21:58:59 · 437 阅读 · 1 评论 -
右值和右值引用
本篇文章主要探讨的是右值和右值引用。但是会以和左值对比的方式探讨。原创 2023-04-17 22:45:31 · 279 阅读 · 0 评论 -
C++ lambda表达式
lambda表达式又叫匿名函数。是现代C++的一种语法糖,并且仍在持续更新。lambda表达式是在调用或作为参数传递的函数的位置处定义匿名函数对象的便捷方法。lambda表达式的一般 形式如下如果使用上述的方式定义一个匿名函数,则此匿名函数只有一次调用机会,即在定义的时候就进行了调用:();但是一般情况下,我们可以使用一个auto 类型变量来接受这样一个匿名函数对象,这样我们可以在更合适的位置进行调用,也可以进行多次调用,更加方便。见如下形式。原创 2022-09-04 14:05:16 · 2755 阅读 · 0 评论 -
C++ new和malloc的区别
事实上,自由存储区是C++为new操作符抽象出的概念,使用new分配出的区域就是自由存储区。而在物理意义的内存上,自由存储区可以在堆也可以在其他地方(比如静态存储区),这取决于编译器从哪里为new的使用分配内存。从上面的实例中,我们就可以注意到malloc返回的指针还需要进行强制类型转换才赋值给A*的指针对象,而使用new则不需要,直接返回的是A*的指针。我们知道内存分为代码区、常量存储区、静态存储区(全局存储区)、堆区、栈区(关于内存分区可以见下面的文章)。使用new是类型安全的。...原创 2022-07-28 22:40:53 · 6060 阅读 · 4 评论 -
C++内存分区管理
一、内存分区模型代码区:存放函数体的二进制代码,有操作系统进行管理全局区:存放全局变量、静态变量和常量栈区:由编译期自动分配释放,存放函数的参数值、局部变量等堆区:由程序员分配和释放,若程序员没有释放,程序结束后由操作系统回收内存四区的意义:不同区域存放不同数据,赋予不同的生命周期............原创 2022-07-09 16:18:24 · 733 阅读 · 1 评论