- 博客(10)
- 收藏
- 关注
原创 赋值构造函数的理解
因此,赋值运算符需要返回一个值,以便在其返回值上继续进行下一次赋值操作。,因为没有额外的拷贝构造函数调用或临时对象的创建。赋值运算符函数需要返回值的主要原因是为了支持。让我们通过一个具体的例子来理解这两种情况。如果没有返回值,上述链式赋值将无法实现。赋值运算符是从右向左结合的。如果返回值类型是普通类型(例如。如果返回值类型是引用(例如。),而不是引用(例如。a = (临时对象)
2025-03-27 08:00:00
381
原创 3分钟快速且深刻的理解拷贝构造函数
我们知道调用无参构造函数的调用是在建立对象的时候,自动调用的,调用带参的构造函数同理,但是需要在对象名后面加上(参数),如上述的Box box1(12,20,25)。(注意a这个对象是早已建立的,已存在的一个对象)同样的,在这里我们同样可以把它理解成 进行了一个:const Point3D &right = a的操作,这样一看是不是就十分清晰?因为这里我们是在建立b这个对象,所以this 这个指针理所当然保存的是b这个对象的地址。拷贝构造函数与带参的构造函数同理,都是在建立对象的时候自动调用的。
2025-03-26 19:17:03
307
原创 C++中,this指针的作用,为什么需要this指针?
这个时候因为this指针里面保存的我们对象的地址(point2D *this = &a1),所以我们可以通过this来使系统可以正确的辨认,如上述的this->x就等价于a1.x。如果我们仔细思考一下会发现,Setxy这个函数是处于(内存中)代码段的,但是我们的数据成员:x,y是处于(内存中)局部区的。我们是怎么做到用处于代码区的函数去改变处于不同区的变量的呢?但是实际写代码的时候不需要这样写,因为在调用成员函数时,C++会自动将当前对象的地址传递给函数,因此你不需要手动传递对象的地址。
2025-03-26 18:49:10
214
原创 如何在数组中完成插入元素和删除元素的操作
具体的情况要具体而定作出微小的改变:假设我们现在是做的一个关于学生元素的插入,那么在日常中我们肯定是把a[0]当作第一个而不是第0个,那么我们要做的就是:cout << "请输入要添加元素的位置(1到9)" 以及 for(int i=length;i>=j;i--);这两个操作。
2024-12-24 21:53:15
445
2
原创 关于递归应用的经典题:汉诺塔问题(以及对递归的理解)
有三个圆柱A、B、C,初始时A上有N个圆盘,N由用户输入给出,最终移动到圆柱C上。每次移动步骤的表达方式示例如下:[STEP 10] A->C。其中,STEP是步骤序号,宽度为4个字符,右对齐。请编写代码,获得输入N后,输出汉诺塔移动的步骤。输入格式N输出格式移动步骤样例输入3样例输出。
2024-12-23 13:34:23
549
原创 谈&a+1 、&a[0]+1、&a,区别在哪里?
对p的加减操作只与p所属类型有关,比如 int *p;那么p+1或者p-1都是加减int 类型的字节数。
2024-12-22 19:14:49
556
原创 选择排序为什么是不稳定排序
这里的告诉我们要注意cin.getline在读入前,缓存区是否有endl存在,这里我们可以有的手段就是:在cin.getline()前面,也就是 cin>>c 的后面,去添加一个cin.ignore() ,它的作用是清楚缓存区。在这个过程中,两个 7 的相对位置发生了变化,最初在 [5, 7, 3, 7, 2] 中,第二个 7 出现在第4个位置,而在排序后的数组 [2, 3, 5, 7, 7] 中,它们的顺序被保持,但由于是在找最大或最小值时发生了交换,可能会打乱其他相同元素的初始序列。
2024-12-22 15:34:29
631
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人