- 博客(17)
- 资源 (10)
- 收藏
- 关注
原创 c语言指针01
要理解指针,首先得知道程序具体执行的流程。程序是由高级语言如c、c++、java等开发的,经过编译器转译成机器码供cpu调度执行。cpu从内存中获取执行程序所需的数据。那这些数据存在内存中,cpu则是通过内存地址去获取。内存存取数据是这样的:内存单元按顺序排列,每个单元都有一个地址编号,cpu根据程序指令的要求从内存中按照指令给出的地址存取其中的数据。由此我们可以很容易分析出,对于系统内存,它既可以存实实在在的数据变量,也可以存其它内存的地址。我们通常把内存地址的这种变量称为指针。指针有很多种类型。
2024-06-30 15:31:02
673
原创 第四章:01构造函数
析构函数可以除类构造函数创建的对象,但是使用new运算符创建的对象就必须用delete进行删除。要注意在处理对象和对象数组的时候,delete运算符的使用方法。本节教程所有代码都是在win11系统,Qt 5.12.12版本,mingw编译工具环境编写运行。构造函数创建的对象是在栈内存中,当程序退出,系统会自动释放内存,new运算符创建的对象是在堆内存中,当程序退出,系统不会释放堆内存。构造函数是特殊的成员函数,当创建类的对象时,系统会自动调用构造函数。构造函数是为了保证对象的每个成员都被正确初始化。
2024-06-29 09:35:28
270
原创 第三章:03类和对象
从作用域的角度看,嵌套类被隐藏在外围类中,该类名只能在外围类中使用。嵌套类的成员函数对外围类的成员没有访问权限,定义在函数体中的类称为局部类(local class)。局部类的成员函数必须被定义在类体中。外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。嵌套类中的成员函数可以在它的类体外定义。但是如果存在两个类需要相互引用形成一个“环形”引用的情况,无法先定义使用。每个类都定义了自己的作用域,称为类作用域。类作用域中说明的标识符只在类中可见。
2024-06-23 22:44:42
404
原创 第三章:02类和对象
上面的图片描述了类的中的成员变量与成员函数在构造对象后的不同之处。在实现了两个对象后,我们知道,不同的对象,会为成员变量分配内存空间,但是成员函数是共享的。成员函数有一个隐含的附加形参,即指向该对象的指针,这个隐含的形参叫做this指针。内联函数在编译的时候将代码直接嵌入到调用的地方,从而减少了函数调用的开销。内联函数在编译的时候会导致程序体积变大,这是一种典型的用空间换时间的用法。class(类)与struct(结构体)的区别:在未指定访问权限时,class默认的时私有的,struct默认是公有的。
2024-06-21 15:13:38
377
原创 第三章:01类和对象
面向对象是模拟自然界认识和处理的事物的方法,将数据和对数据的操作方法放在一起,形成一个相对独立的整体——对象(Object),同类的对象还能抽象出共性,形成类(Class)。当定义了一个类后,又需要定义一个新类,这个新类与原来的类相比只是增加或修改了部分属性与操作,这时可以使用原来类派生出新类,新类中只需描述自己所特有的属性和操作,大大提高了程序的可重继承性大大简化了对问题的描述从而提高了程序设计、修改、扩充的效率。当对象的一个函数被调用时,对象执行内部的代码来响应该调用,从而使对象呈现一定的行为。
2024-06-19 20:10:21
908
原创 第二章: 02面向对象
面向对象是模拟自然界认识和处理的事物的方法,将数据和对数据的操作方法放在一起,形成一个相对独立的整体——对象(Object),同类的对象还能抽象出共性,形成类(Class)。当定义了一个类后,又需要定义一个新类,这个新类与原来的类相比只是增加或修改了部分属性与操作,这时可以使用原来类派生出新类,新类中只需描述自己所特有的属性和操作,大大提高了程序的可重继承性大大简化了对问题的描述从而提高了程序设计、修改、扩充的效率。当对象的一个函数被调用时,对象执行内部的代码来响应该调用,从而使对象呈现一定的行为。
2024-06-13 19:58:01
549
原创 第二章:01面向对象
编写程序的主要目的是能让计算机解决实际生活上的问题。就需要将实际生活上的问题抽象出来,通过一定的数据去表示,并通过一定的逻辑去处理这些数据。每个对象用自己的方式来管理数据,也就是说对象包含两个要素,一个是对象的属性,一个是对象的操作方法。结构化程序设计的基本思想是自顶向下,逐步细化的设计方法。2.汇编语言:将机器语言指令映射为人能读懂的助记符如ADD, SUB等。计算机如何执行程序?3.高级语言:高级语言屏蔽了机器的细节,提高了语言的抽象层次。传统的程序设计方法是面向过程的,特点是数据与数据处理分离。
2024-06-10 21:34:47
277
原创 第一章:04从c语言到c++
有些时候函数功能本身很简单,代码很短,但使用频率很高,频繁切换会花费很多时间。2.内联函数在调用时期要求形参和实参类型要一致,有一个类型判断的过程,而且内联函数会先对实参表达式进行求值,然后传给形参。当一个较大的算术类型赋值给较小的类型时,可以用static_cast进行强制转换。reinterpret_cast(expr)通常为操作上的位模式提供较低层的重新解释,也就是数据以二进制式重新解释。const_cast(expr),这是用来移除对象的常量性(cast away the constness)
2024-06-10 20:37:43
690
原创 第一章:02从c语言到c++
本节教程所有代码都是在win11系统,Qt 5.12.12版本,mingw编译工具环境编写运行。placement new 不分配内存,调用拷贝构造函数。在声明或定义函数的时候,可以给形参赋一些默认值。在调用函数时,若没有给出实参,则按指定的默认值进行工作。下面这段代码编译会出错。加上 extern "C"后函数就不支持重载了,因为不能改名。要想让代码能在c语言和c++环境中同时运行,可以这样写。new运算符可用与创建堆空间,成功则返回首地址,不成功则为异常。域运算符的形式为 ::。
2024-06-06 22:20:43
473
原创 第一章:01从c语言到c++
3.作用域不同,const定义的常量的作用域为该变量的作用域范围,而#define定义的常量作用域为它定义点到程序结束,当然也可以在某个地方用#undef取消。第一步:第一个数据成员放在offset为0的位置,第二步:其他成员对齐至 #pragma pack 所指定的值的整数倍位置。1.const定义的常量有类型,而#define定义的没有类型,编译可以对前者进行类型安全检查,后者仅仅是做一个简单替换。2.const定义的常量在编译时分配内存,而#define定义的常量是在预编译时进行替换,不分配内存。
2024-05-31 23:00:16
323
原创 vm16虚拟机 Redhat linux 8 Samba服务配置教程
1. 安装Samba服务相关软件2. 修改Samba配置文件3. 开启Samba服务以及防火墙4. windows10设置与服务器连接。
2024-04-22 16:05:04
867
转载 文章:[计算机动画] 路径曲线与运动物体控制(Cardinal样条曲线)中的代码文件注释
[计算机动画]路径曲线与运动物体控制( Cardinal样条曲线)spline.cpp文件#include "spline.h"#include<math.h>void point::setPoint(float _x, float _y){ x = _x; y = _y;}void spline::initLength()//计算曲线长度{...
2018-08-07 22:31:11
860
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人