乘风的小站
  • 首页
  • 归档
  • 标签
  • 关于

独占智能指针

在 C++ 中没有垃圾回收机制,必须自己释放分配的内存,否则会造成内存泄露。解决这个问题最有效的方法是使用智能指针 smart pointer。智能指针是存储了指向动态分配(堆内存)对象指针的类,用于生存期的控制,能够确保在离开指针所在作用域时自动地销毁动态分配的对象,防止内存泄露。智能指针的实现技术是引用计数,每使用一次内部引用计数加 1,每析构一次内部的引用计数减 1,减为 0 时删除所指向的
2021-09-18
#C++11

共享智能指针

在 C++ 中没有垃圾回收机制,必须自己释放分配的内存,否则会造成内存泄露。解决这个问题最有效的方法是使用智能指针 smart pointer。智能指针是存储了指向动态分配(堆内存)对象指针的类,用于生存期的控制,能够确保在离开指针所在作用域时自动地销毁动态分配的对象,防止内存泄露。智能指针的实现技术是引用计数,每使用一次内部引用计数加 1,每析构一次内部的引用计数减 1,减为 0 时删除所指向的
2021-09-18
#C++11

转移和完美转发

move在 C++11 添加了右值引用,并且不能使用左值初始化右值引用,如果想要使用左值初始化一个右值引用需要借助 std::move() 函数将左值转换为右值。使用这个函数和移动构造函数一样都具有移动语义,将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存拷贝。 从实现上讲,std::move 基本等同于一个类型转换:static_cast<T&&>
2021-09-17
#C++11

可调用对象包装器、绑定器

可调用对象在 C++ 中存在 “可调用对象” 这个概念。可调用对象有如下几种定义:(1)是一个函数指针 12345678int print(int a, double b){ cout << a << ", " << b << endl; return 0;}// 定义函数指针int (*func)
2021-09-17
#C++11

基于范围的for循环

在 C++98/03 中,不同的容器和数组遍历的方式不完全相同,写法也不统一。C++11 基于范围的 for 循环以简洁、统一的方式来遍历容器和数组,使用起来也更方便。 for 循环新语法介绍新语法之前,看一个使用迭代器遍历容器的示例: 123456789101112131415#include <iostream>#include <vector>using n
2021-09-17
#C++11

列表初始化

关于 C++ 中的变量、数组、对象等都有不同的初始化方法,这些繁琐的初始化方法中没有任何一种方式适用于所有的情况。为了统一初始化方式,并且让初始化行为具有确定的效果,在 C++11 中提出了列表初始化的概念。 统一的初始化在 C++98/03 中,对应普通数组可以直接进行内存拷贝 memcpy() 的对象,可以使用列表初始化来初始化数据。 12345678910// 数组的初始化int
2021-09-16
#C++11

委托构造和继承构造

委托构造函数委托构造函数允许使用同一个类中的一个构造函数调用其它的构造函数,简化相关变量的初始化。示例代码如下: 123456789101112131415161718192021222324252627282930313233343536373839#include <iostream>using namespace std;class Test{public: Te
2021-09-16
#C++11

using

在 C++ 中 using 用于声明命名空间,使用命名空间也可以防止命名冲突。在程序中声明了命名空间之后,就可以直接使用命名空间中的定义的类。在 C++11 中赋予了 using 新的功能,让 C++ 变得更灵活。 定义别名在 C++ 中可以通过 typedef 重定义一个类型,语法格式如下: 12// typedef 旧的类型名 新的类型名;typedef unsigned int uint_t
2021-09-16
#C++11

模板的优化

模板的右尖括号在泛型编程中,模板实例化有一个非常繁琐的地方,那就是连续的两个右尖括号 >> 会被编译器解析成右移操作符,而不是模板参数表的结束。先看一段关于容器遍历的代码,在创建的类模板 Base 中提供了遍历容器的操作函数 traversal() 12345678910111213141516171819202122232425262728#include <iostream&
2021-09-15
#C++11

自动类型推导

在 C++11 中增加了很多新的特性,可以使用 auto 自动推导变量的类型,还能够结合 decltype 来表示函数的返回值。使用新的特性可以让我们写出更加简洁,更加现代的代码。在 C++11 之前 auto 和 static 是对应的,表示变量是自动存储的,但是非 static 的局部变量默认都是自动存储的,因此这个关键字变得非常鸡肋,在 C++11 中赋予了新的含义,使用这个关键字能够像别的
2021-09-15
#C++11
1…1011121314…32

搜索

Hexo Fluid
有态度,有坚持~