C++
Lose--Yourself
SLAM方向研究生
展开
-
c++ const和define的区别
c++原创 2022-09-16 15:09:37 · 387 阅读 · 1 评论 -
面向过程和面向对象
面向对象和面向过程原创 2022-09-15 16:41:43 · 171 阅读 · 0 评论 -
C++运算符重载
c++运算符重载原创 2022-08-16 09:55:35 · 201 阅读 · 0 评论 -
c++智能指针
智能指针原创 2022-08-15 16:23:38 · 451 阅读 · 0 评论 -
C++ Lambada表达式
C++原创 2022-06-07 21:28:42 · 480 阅读 · 0 评论 -
C++ 多维数组
C++ 多维数组在c++中,经常用指针表示一个数组,多维数组则是数组的数组,对于二维数组来说,就像是一个数组里面包含了很多数组的指针,而这些指针又分别对应着一个数组,这样也会使得数组的内存变得不连续,遍历这个数组会花费相比较相同元素个数更多的时间所以应该避免使用多维数组。如下所示,创建了一个二维数组,为里面的一维数组的指针创建了空间,再通过遍历,为每个一维数组的指针赋上了一个10个int大小的指针,这个内存用于存放int。 int** a2d = new int*[10]; for(int i原创 2022-05-31 19:51:26 · 238 阅读 · 0 评论 -
C++ virtual destructors
C++的虚析构函数被用于多态之中,用基类指针指向子类对象的地址,当子类对象被删除时,我们希望调用子类的析构函数,而不是父类的析构函数,父类的虚析构函数由此而生。我们定义了两个类class base{ //基类public: base(){cout << "base constructor called" << endl;} ~base(){cout << "base destructor called" << endl;}};clas原创 2022-04-25 20:35:55 · 1162 阅读 · 0 评论 -
C++ template
template可以让编译器帮用户写代码,它将会被编译根据你具体的使用,it makes compiler write some code for you based some rules ,and sounds cool !当你使用模板编程时,编译器为此生成一个框架,当你传入某个具体的参数时,编译器将会根据你传入的参数在事先确定的框架里面写入代码。为什么需要模板当我们需要许多函数,其内部执行的操作是相似的,但是我们可能需要接受不同类型的参数,这样的函数就可以写模板模板函数只有当调用这个模板时,才会原创 2022-04-21 15:17:24 · 794 阅读 · 0 评论 -
C++ virtual function
public继承C++中为防止大量的代码重复,使用了继承机制,子类继承父类的函数和属性,子类对象可以调用父类的public函数和属性,子类是对父类的一种扩展,当一些类有一些共同的函数或者属性,我们便可以使用继承机制,将这些函数集成到父类中,减少代码的重复性using namespace std;class entity{public: int x = 0,y = 0; void move(int x_, int y_){ x += x_; y +=原创 2022-04-20 22:27:39 · 634 阅读 · 0 评论 -
C++ thread(一)
C++的多线程编程被用来让一个程序的代码两条路径同时运行,它可以让程序运行的更快,也可以让程序运行时执行不同的操作,比如当程序在执行cin操作时,会一直等待用户输入enter,此时程序就无法执行其他操作,如果使用多线程就可以解决这个问题#include <thread>#include <iostream>static bool finished = false;void doworking(){ while(!finished){ std::co原创 2022-04-15 17:25:25 · 434 阅读 · 0 评论 -
C++ assert
assert()函数被包含在头文件assert.h中,当函数括号内的表达式为真时,程序将继续执行,当函数表达式为假时,程序将停止执行。int main(int argc, char* argv[]){ int n = 10; assert(n == 2); return 0;}程序执行的效果如下图...原创 2022-04-13 20:19:47 · 878 阅读 · 0 评论 -
C++ nested class
C++ nested classC++ 的nested class是在类中声明另一个类,nested class的作用域是在class之中,当nested class访问权限设置为public时,可以从class通过作用域解析符号::访问nested class里面的public函数或变量,或者创建一个nested class的对象,就像一个在class名称空间下面的一个类class person{public: string name; person(string _name):na原创 2022-04-11 14:40:42 · 856 阅读 · 0 评论 -
C++ unordered_set和set
set和unordered_set都是C++的关联性容器,set的内部实现为红黑二叉树,unordered_set的内部实现为哈希表,二者存储的值都只能是唯一的,二者的区别是unordered_set的存储的变量没有顺序,set容器则会进行自动排序,unordered_set对插入,删除,查找操作的时间复杂度都为O(1),它运用Hash表将unordered_set中的元素存储在buckets中,buckets是hash函数内部通过插入的元素值分配的一个内存空间,便于快速查找,但是对于数据量较大的情况下ha原创 2022-04-10 22:05:48 · 3758 阅读 · 0 评论 -
C++枚举类型
C++枚举类型枚举类型的本质是一个integer系列的组合,应用场景:用一些整型来表示某些特定的状态,并且给这些整数赋予一些名字来增加代码的可读性。假设我有以下三个整型变量需要维护,最大的问题是这三个整型变量并不是一个group,也就是说我可以将value的值设置任意整数,那么后面的判断就变得没有意义了int a = 0;int b = 1;int c = 2;int value = b;if(value = b){ //do something}可以声明一个enum类型来将三个整数原创 2022-04-02 21:40:29 · 1601 阅读 · 0 评论 -
C++ static关键字
static变量和函数当一个变量在声明加入static关键字时,该变量就仅仅对当前翻译单元内可见,编译器并不会将其与其他翻译单元进行链接,就像是一个只对当前文件可用的“全局变量”。函数也是如此,如果不需要一个在所有的翻译单元都可见的函数或者是变量,就需要使用static关键字,如果我们在两个文件中定义了变量a将会出错 int a;#include <iostream>int a;multiple definition of `a';除非我们将其中一个文件的变量a声明为stat原创 2022-03-30 17:22:58 · 55 阅读 · 0 评论 -
C++函数指针
C++函数指针(一)函数指针被用于存储函数的地址用高级语言写成的代码被用来翻译成机器语言,即按照某种规程的二进制代码。当程序运行的时候,计算机会为程序分配内存将二进制指令复制到内存中的某一个区域,一个函数将会被翻译为一段具有连续地址的指令,指令的首地址就是函数的指针,也被称为函数的入口。函数指针的实现假如有这样一个两个数相加的函数,该怎么声明一个指向该函数的指针呢int Add(int a,int b){ return a+b;}结果如下,函数的返回值,参数必须与要指向的函数严格一致,其中原创 2022-03-23 20:23:15 · 1745 阅读 · 0 评论