0%

构造函数

类的构造函数是类的一种特殊的成员函数,用于创建类的新对象和初始化自定义类成员。

  • 构造函数具有与类相同的名称,没有返回值,也不返回 void
  • 可以根据需要定义多个重载构造函数,以各种方式自定义初始化。
  • 构造函数可用于为某些成员变量设置初始值。
  • 通常构造函数具有公共可访问性,因此外部代码可以调用其创建类的对象,但也可以将构造函数声明为 protectedprivate
  • 构造函数可以声明为 inline, explicit, friendconstexpr
  • 构造函数可以初始化已声明为 const, volatile 或者const volatile 的对象,该对象在构造完成后变为 const
  • 如果没有自己声明,编译器将为一个类声明 (编译器版本的) 默认构造函数、复制构造函数、复制赋值操作符和析构函数。所有这些函数都是 publicinline 的。
阅读全文 »

push_back()向容器尾部添加元素时,首先会创建这个元素,然后再将这个元素拷贝或者移动到容器中(如果是拷贝的话,事后会自行销毁先前创建的这个元素)。

emplace_back() 在实现时,则是直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程。

事实上,大多数情况下二者没有区别,只有在少数情况下 emplace_back() 效率更高。主要是 emplace_back() 支持 in-place construction

阅读全文 »

相比于C风格的强制类型转换,C++新增了关键字 static_castdynamic_castconst_castreinterpret_cast ,用于强制类型转换。

新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。

1. static_cast

用于非多态类型转换 (静态转换),任何标准转换都可以用它,但是不能用于两个不相关的类型转换。与C旧式转型基本相同。

阅读全文 »

template < class T, class Alloc = allocator<T> > class vector;

std::vector 简介

std::vector 是C++标准库里封装好的动态大小数组的顺序容器,能够存放各种类型的对象。

与数组 array 一样, vector内存空间的地址是连续的。这意味着可以通过下标索引的方式获取到对应的元素,所以访问其元素的效率非常高,从其末端添加或删除元素的效率也相对较高。而对于涉及在非结束位置插入或删除元素的操作,它们的性能比其他操作差,效率较低。

阅读全文 »

std::future 是C++11 的一个模板类,提供了一种用于访问异步操作结果的机制。可以用来获取异步任务的结果,因此可以把它当成一种简单的线程间同步的手段。

设想这样的情况,你希望一个线程进行工作A,同时你在做一些其他的工作,你希望在某个特定的时间获取那个工作A的结果。在c++11,这个可以轻松被 std::future 实现。而由于它是一个模板类,可以返回任何类型的结果。

阅读全文 »

CMake中设置编译选项

1
2
3
4
5
6
7
8
9
10
11
option(BUILD_VISUALIZATIONS "Build visualization, default OFF" OFF)
message("BUILD_VISUALIZATIONS is ${BUILD_VISUALIZATIONS}")


# 可以跟build type关联
# if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG)

if(BUILD_VISUALIZATIONS)
add_definitions(-DBUILD_VISUALIZATIONS)
# target_compile_definitions(${project_name} PRIVATE BUILD_VISUALIZATIONS)
endif()
阅读全文 »

下载rar软件安装包

  1. 直接从 rarlab 下载安装包

  2. 通过命令行下载

    1
    2
    wget https://www.rarlab.com/rar/rarlinux-x64-6.0.1.tar.gz  # 64位
    wget https://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz # 32位

安装

1
2
3
4
tar zxvf rarlinux-x64-6.0.1.tar.gz
cd rar
sudo make
sudo make install

解压缩

1
2
rar x xxx.rar  # Extract files with full path
rar e xxx.rar # Extract files without archived paths
阅读全文 »