EchoDemo's Blogs

C++中的成员变量、全局变量和局部变量

1、成员变量:写在类声明的大括号中的变量,称之为成员变量(属性,实例变量)成员变量只能通过对象来访问。

注意:成员变量不能离开类,离开类之后就不是成员变量,成员变量不能在定义的同时进行初始化。

存储:堆(当前对象对应的堆的存储空间中)存储在堆中的数据,不会被自动释放,只能程序员手动释放。

2、全局变量:写在函数和大括号外部的变量,称之为全局变量。

作用域:从定义的那一行开始,一直到文件末尾。全局变量可以先定义再初始化,也可以定义的同时初始化。

存储:静态区。程序一启动就会分配存储空间,直到程序结束才会释放。

3、局部变量:写在函数或者代码块中的变量,称之为局部变量。

作用域:从定义的那一行开始,一直到遇到大括号或者return。局部变量可以先定义再初始化,也可以定义的同时初始化。

存储:栈。存储在栈中的数据有一个特点,系统会自动给我们释放。

*全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间。

*非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。另外,静态全局变量只初使化一次,防止在其他文件单元中被引用。

*局部变量和静态局部变量的区别在于它们的存储方式不同,前者存储在栈当中,而后者存储在静态区当中。

*静态函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。静态函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。类中的非静态函数默认是有this指针的,表明为该类的对象所有,静态函数不属于任何类的对象,没有this指针,由类直接调用。也就是说全局函数,静态函数都不能使用this。

🐶 您的支持将鼓励我继续创作 🐶
-------------本文结束感谢您的阅读-------------