问题一:指针与引用的区别
疑问 为什么引用的本质是指针常量,但是对它求sizeof却是变量所占内存空间的大小那??????????
1.引用是给变量起了个别名,而指针本身是个变量,储存变量的地址
2.引用必须初始化,但指针变量可以不初始化,为野指针
3.引用不能初始化为空,但是指针可以初始化为空,为空指针
4.引用的本质是指针常量,所以不能改变引用关系,但是指针可以改变指向
5.用引用接收传递过来的参数可以不判空,但是指针必须判空
6.没有多级的引用,俩个&&是右值引用不是多级引用,但是又多级指针
7.引用所占空间的大小就是它起别名变量的大小,但是指针所占空间的大小不是4字节就是8字节,看编译环境
8.引用自增后相当于变量的自增,但是指针自增后相当于p的指向向后偏移了它存储类型所占空间大小那么长
问题二:c++中static的作用
1.C/C++共有的
1.静态全局变量可以使作用域缩小变为同一个文件下
2.静态局部变量可以使声明周期变长,不会随着函数的结束而结束
3.静态全局函数也是可以使作用域缩小变为同一个文件下
2.C++独有的
静态成员变量
1.存储再静态区,不占对象内存
2.属于类不属于对象,所有对象共享一份静态成员变量
3.类内声明,类外初始化
4.可以通过类名或者对象名进行调用
5.分配内存在编译阶段,主函数之前
静态成员函数
1.存储在代码段,不占对象内存
2.属于类不属于对象
3.没有this指针,所以不能访问静态成员变量,也不能调用静态成员函数
4.能访问的只有,传递过来的形参,静态成员变量和函数,以及全局变量和全局函数
5.俩种访问方式对象名或者是类名
静态函数的好处和静态全局变量一样,都是别的文件不可以访问,在不同文件下定义相同的名字不会发生冲突
深层:
1.为什么静态成员函数不能申明为const?
使用const函数的目的是不想让在常函数内部修改成员变量的值,但是我静态成员函数已经没有this指针了,肯定不会改变非静态成员变量的值了,也就不用担心这个问题
2.为什么静态成员变量要类内定义,类外初始化那?
因为静态成员变量属于类不属于对象,所以如果在类内初始化的话,岂不是每一个对象都拥有了一份静态成员变量,这不就矛盾了吗,所以静态成员变量必须类内声明,类外初始化
3.static关键字为什么只能出现在类内部的声明语句中,而不能重复出现在类外的定义中?
类出现的目的就是多文件之间的交互,你把这个类static了,作用域变成本文件了,还咋交互了!
4.为什么常量静态成员数据的初始化可以放在类内(注意:只有静态常量整型数据成员才可以在类中初始化
疑问,不懂!!!!!
5.为什么静态成员函数只能访问静态成员变量
因为静态成员函数没有this指针,无法访问非静态成员,所以只能访问静态成员
6.静态成员函数与非静态成员函数的区别
我认为只要的区别是this指针
7.为什么要用得静态成员变量和静态成员函数
因为静态成员函数和静态成员变量都是属于类不属于对象,多个对象共享一份,可以共享!!!