- 博客(13)
- 收藏
- 关注
原创 指针和引用的区别
指针就是一个变量的地址,本质上也是一个变量,可以对指针取地址也就是说存在多级指针。引用就是一个变量的别名,与被引用的变量共享同一块内存空间。不能对一个引用取引用也就是不存在多级引用。在这段代码里面,我们定义了一个变量a,我们对变量a取地址初始化了指针变量pa,那么pa就是a的地址,由于pa本身也是一个变量所以我们可以对它取地址初始化给一个二级指针ppa。但是由于引用本身不是变量,只是一个别名,所以不存在多级引用。
2023-12-09 18:24:39
48
原创 数据结构算法笔记_数组
非末尾位置增加删除元素需要进行大量的数据移动O(n)末尾位置增加删除元素的时间复杂度是O(1)下标访问(随机访问)时间复杂度是O(1)增加元素可能会涉及到数组扩容消耗比较大。访问元素前后相邻位置的元素非常方便。
2023-12-07 12:10:44
26
原创 数据结构算法笔记_基础
相互之间存在一种或者多种特定关系的数据元素的集合,在逻辑上可以分为线性结构(数组、链表)、散列结构(哈希表)、树形结构(二叉树)(BST树(二叉搜索树)、AVL树、红黑树、B-树、B+树、B*树)、图形结构(图)等。时间和空间复杂度,衡量算法效率,算法在执行过程中,随着数据规模n的增长,算法执行所花费的时间和空间的增长速度。求解具体问题的步骤描述,代码上表现出来是解决特定问题的一组有限的指令的序列。
2023-12-07 12:06:54
28
原创 C++笔记_面向模板
模板代码是不能在一个文件中定义,在另外一个文件中使用的,模板代码调用之前,一定要看到模板定义的地方,这样的话,模板才能够正常的实例化,产生能够被编译器编译的代码,所以模板代码都是放在头文件当中的,然后在源文件当中直接进行include包含。模板函数:在函数调用点,编译器用用户指定的类型,从原模板实例化一份函数代码出来模板函数。模板的实参推演:可以根据用户传入的实参的类型,来推导出模板类型参数的具体类型。模板的特例化(专用化):特殊(不是编译器提供的,而是用户提供的)的实例化。
2023-12-07 12:05:38
23
原创 C++笔记_面向对象
对于简单类型,打开反汇编可以看到它们的指令是一样的,对于成员对象,这样写相当于先定义了一个CDate _date,然后对_date里的成员一一赋值。常对象只能调用常成员方法,所以当我们写一个函数只有读操作的时候,最好将它实现成const成员方法。3.可以任意访问对象的私有成员,仅限于不依赖对象的成员(只能调用其他的static静态成员)可以指定当前对象成员变量的初始化方式,尤其是对于成员对象来说,你不这么写可能还会报错。普通的成员方法 => 编译器会添加一个this形参变量(静态对象无法调用)
2023-12-07 12:01:23
18
原创 C++笔记_基础
相当于直接给默认值。首先这是一个指令,表示在栈上划分一个4字节的内存空间,把0Ch这个数据放到dword ptr[a] (a这块内存的4字节内存里边)如果在C++编译期中,就extern “C”,否则就不extern "C",这样对于代码编译成函数符号的时候就更加灵活。这个指针p现在是常量,不能再指向其他内存,但是可以通过指针解引用修改指向的内存的值。4.形参给默认值的时候,不管是定义处给,还是声明处给,形参默认值只能出现一次。可以任意指向不同的int类型的内存,但是不能通过指针间接修改指向的内存的值。
2023-12-07 11:52:51
30
原创 运算符重载
如我们想输出一个Complex,希望输出它的实部和虚部,那么我们只需要对<<进行重载即可。为什么不重载cout?因为cout是ostream类型的对象,系统已经给我们定义好了的,我们很难去对它ostream类进行重载。此外,其实C++还有很多地方运用到了运算符重载,比如C++STL模板库里的iterator。再来看一个例子,这个例子中我们实现了一个简单的。使对象的运算表现得和编译器内置类型一样。,来加深对运算符重载的理解。帮助我们理解运算符重载。
2023-07-10 10:36:45
42
1
原创 C++三大特性
父类实现的纯虚函数,子类对其实现,父类指针/引用指向/引用子类对象,指针/引用调用重写的方法。重载:同一个作用域下,函数名相同,参数不同的这样一组函数我们称他们构成一组重载函数。(3)要想不被外界访问又想被子类继承,可以将访问权限设置成protected。子类继承父类公有的或保护的成员。多态分为静态多态和动态多态,其中静态多态分为重载跟函数模板,动态多态指的是重写。函数模板:根据你提供参数的不同,在运行期生成不同的函数。(2)private修饰的成员无法被继承。封装性是指外界无法访问我私有的或保护的成员,
2023-07-09 11:11:16
60
1
原创 对象的深拷贝与浅拷贝
3. 此时我们可以提供深拷贝构造函数,它是一种特殊的构造函数,是构造函数的一种重载,所以没有返回类型,功能是将一个对象拷贝给我的一个不存在的对象(如果这个对象已经存在了,那么将会是拷贝赋值操作,这个我稍后进行讲解),所以它的参数类型当然是自己的类型,由于我们为了传参的效率问题我们通常会传引用,但是传引用会有可能修改了我们的实参,这显然不是我们所期望的,所以我们会在形式参数前加const,传一个const引用,此时形参无法对这个参数进行修改。而对于拷贝赋值被作用的对象已经存在了,做的是赋值!
2023-04-05 11:36:28
114
1
原创 this指针你需要了解的
因为静态成员函数属于类,不属于对象,也就无法隐式的传入我的对象的地址,当然你的静态的成员函数的参数列表里面没有this指针,否则就会出现编译错误。2. this指针是一个const指针,意味着我的指向不能修改,相当于T* const this。代表当前调用本函数的对象的地址。1. this指针只能在成员函数中使用,且不能显示的写在成员函数的参数列表里面,但是在参数体里面你可以显示的写出来。3. this指针,作为函数参数列表的一部分,成员函数调用时开始初始化,调用结束消亡。
2023-04-03 11:31:10
206
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人