C++
廊外余音
这个作者很懒,什么都没留下…
展开
-
C++数组,引用,指针的问题
数组的引用与引用的数组数组的引用:对数组的一个别名,示例:int array[2]={1, 2};int (&a)[2]= array;其中,a为引用,引用对象为array,注意引用必须初始化。引用的数组:这是不合法的,因为引用不支持传统意义的复制,其本身并不占内存,而数组是会占内存的,其次引用必须初始化,而数组中的元素不能同时初始化,数组也不能被另一个数组初始化或被另一个数组赋值。所以引用的数组是错误的。数组的指针与指针的数组这个定义很好理解和区分,只需注意写法:数组的指针:int原创 2020-07-12 13:18:27 · 191 阅读 · 0 评论 -
c11右值与移动语义
左值和右值:## 标题左值具名,对应指定内存域,可访问;右值不具名,不对应内存域,不可访问;临时对像是右值,左值可处于等号左边,右值只能放在等号右边,区分表达式的左右值属性有一个简便方法:若可对表达式用 & 符取址,则为左值,否则为右值。右值引用:## 标题在 C++11 之前,右值是不能被引用的,最大限度就是用常量引用绑定一个右值,如 :const int &a = 1; 在这种情况下,右值不能被修改的。但是实际上右值是可以被修改的,既然右值可以被修改,那么就可以实现右值引用。C1原创 2020-07-12 13:11:59 · 598 阅读 · 0 评论 -
C++智能指针
std::shared_ptr## 标题std::shared_ptr使用引用计数. 每一个shared_ptr的拷贝都指向相同的内存。 在最后一个shared_ptr析构的时候, 内存才会被释。初始化示例:std::shared_ptr<int> p(new int(2));std::shared_ptr<int> p4(new int, std::default_delete<int>()); //第二个参数为删除器,可定制化删除对象std::shared_原创 2020-07-12 12:12:32 · 141 阅读 · 0 评论 -
map和unorder_map
unordered_map/unordered_set/unordered_multimap/unordered_multisetmap/multimap/set/multisetmap:原型:template<class _Kty, // key typeclass _Ty, // mapped typeclass _Pr = less<_Kty>, // key compareclass _Alloc = allocator<原创 2020-07-12 11:52:23 · 187 阅读 · 0 评论 -
关于函数指针、Lambda表达式和std::function
一、函数指针## 标题函数指针定义与初始化:int add(int nLeft,int nRight);//函数定义 int (*pf)(int,int);//未初始化 pf = add;//通过赋值使得函数指针指向某具体函数 注意函数名的括号(pf)必不可少,否则就声明成为返回int的函数。亦可使用typedef进行声明和定义:typedef int (*PF)(int,int); PF pf;//此时,为指向某种类型函数的函数指针类型,而不是具体指针,用它可定义具体指针函数指针作原创 2020-07-12 11:29:59 · 1612 阅读 · 0 评论