C++基础知识

一、引用(&)

1、基本定义:引用可以理解为变量的别名

int x = 10;
int &y = x; //y 是 x 的引用,可以理解为别名,y 所做的更改即是 x 所做的更改
y = 20; //此时 x 也会变成20

2、一点拓展:

  1. 引用必须初始化;
  2. 引用的操作与变量本身的操作是一样的;
  3. 结构体变量的引用与普通变量的引用的使用是一样的;
  4. 指针类型变量的引用与普通变量的引用的使用是一样的;
int a = 2;
int *p = &a; //p 是指向 a 的指针变量
int *&q = p; //q 是 p 的引用,可以通过 q 改变指针 p 所指向的对象的值
*q = 10; //此时 a 就变成了10

3、指针与引用的区别:

  • 非空区别:引用一定要初始化,但是指针可以不初始化;
  • 引用在指向一个变量时不能被改变(不能再指向别的变量,但是被指向的变量值可以改变);但是指针可以改变指向的对象;

二、const关键字

1、const 修饰常量:const 修饰普通变量,变量会变成常量,如下:

const int a = 3; //此时的变量 a 的值不能再发生改变,若强制改变,会报错 

2、const 修饰指针:此时程序员无法对通过该指针对其指向的对象进行更改,即不能更改保证程序的健壮性。

const int *p = NULL;
int const *p = NULL; //两者等价

3、const 修饰引用:引用是不能改变的,即 y 不能再作为别的变量的引用,但是 x 是可以改变的。

int x = 3;
const int &y = x;

4、const 修饰函数:

  • const 修饰函数参数:使得参数在函数体内不能改变
int x = 6;
void test(const int x)
{
    x = 10; //报错
}
  • const 修饰函数返回值:返回值的内容不能改变

5、类中 const 的作用:

  • 若类的数据成员被 const 修饰,则该数据成员只能在构造函数的初始化列表中进行初始化;
  • 若类的成员函数被 const 修饰,则该成员函数只能调用类中的 const 成员变量;
  • 若类的对象被 const 修饰,则该对象只能调用类中的 const 成员函数。

6、const 和 #define 的区别:

  • 使用 const 定义的常量是有数据类型的,在代码编译时会对常量进行数据类型的安全性检查,但是使用 #define 定义的常量只是进行简单的替换,宏定义是 C 语言编译系统的预处理,既然是预处理,一定发生在编译之前,也就是说宏的替换是在编译之前进行的;
  • 一些调试工具可以对 const 定义的常量进行调试,但是对 #define 定义的常量无法进行调试;

三、static 关键字

1、static 修饰局部变量:会使局部变量位于静态变量区,初始化时会自动初始化为0,延长局部变量的生命周期,直到程序运行结束才消亡;
2、static 修饰全局变量:这个全局变量只能在本文件中使用,不能被其他文件访问,即使是加了 extern 声明也不行;
3、static 修饰类的数据成员:只能在类外对其进行初始化,该成员会在多个对象之间共享,如果在类中改变它的值,那么在所有对象中它的值也被改变;此外,即使不对该类实例化对象,系统也会给该数据成员分配内存空间;
4、static 修饰类的成员函数: 该成员函数只能访问类中的 static 数据成员,并且它没有 this 指针。

四、函数

1、函数参数的默认值:

(1)函数声明中可以有默认值,有默认值的形参一定要位于参数列表的最后面;

int max(int x, int y = 12, int z = 15);

(2)函数定义中不建议带有参数默认值;
(3)函数调用时,若无实参才会使用默认参数,有实参是优先使用实参;

2、函数重载:

(1)在同一个作用域下,同名的函数拥有不同的参数个数或者参数类型,这些函数彼此之间相互重载;

3、内联函数(inline):

(1)内联函数的定义与普通函数一样,只需要在定义时使用inline关键字;
(2)逻辑简单(没有for或者while循环)的函数,调用频繁的函数可以定义为内联函数;
(3)递归函数无法成为内联函数,编译器会自动识别为普通函数进行编译

五、C++内存管理:

1、内存的分配:

  • 静态存储区:存储全局变量和静态变量;
  • 常量存储区:存储常量,不允许被修改;
  • 栈区:存储变量、函数参数,在不需要时会自动清除变量;
  • 堆区:由程序员申请和释放的存储区,在 c 语言中使用 malloc()/free()函数进行申请和释放,在 c++ 中使用 new/delete 运算符进行申请和释放;
  • 代码区:存储编译后的二进制代码文件。

2、new 和 delete 关键字:

int *p = new int; //申请内存
if(p == NULL)
{
//申请失败
}
delete p; //释放内存
p = NULL //置为空
int *arr = new int[10]; //申请块内存
delete []arr; //释放块内存

3、C 和 C++ 中内存申请释放的区别:

  • C 语言中申请和释放内存分别使用 malloc() 和 free() 函数,new和delete是 C++ 的运算符;
  • new 和 delete 可以使用 new[] 和 delete[] 来为数组申请内存,但是 malloc() 和 free() 都是统一的分配一块区域,并不考虑该区域中存储的是什么;
  • new 可以重载,malloc() 不可以;

4、使用 new[] 申请的空间可以使用 delete释放吗?

我们知道,在 c++ 中,使用 new[] 申请的块空间要使用 delete[] 来释放,两个要成对使用,那么使用 new[] 申请的空间可以使用 delete 释放吗?答案是肯定的。c++ 为自定义变量或者类的对象申请空间时,需要调用相应的构造函数,在用完销毁时,要调用析构函数,而且是每一个对象都要调用,所以一定要用 delete[] 来释放;但是对于一些内置类型,比如 int ,double 在释放空间时并不需要调用析构函数,所以使用 new[] 申请的空间可以使用 delete 释放。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值