全局变量和局部变量的区别/静态成员函数变量和非静态函数变量的区别
来源:互联网 发布:韧带 知乎 编辑:程序博客网 时间:2024/06/06 08:23
一、全局变量和局部变量的区别
(1)、生命周期
(2)、存储区不同。前者在全局数据区,后者在堆栈区;
(3)、作用域
(4)初始化时,全局变量被初始化为0,后者是随机数;
二、静态成员(函数、变量)和非静态函数(变量)的区别
(1)共享性:静态成员是类的一部分,被类的所有的对象实例所共享;非静态数据成员,类的每个实例都有一份拷贝。
(2)内存分配:静态成员是类的静态成员(数据成员和函数成员)为类本身所有,在类加载的时候就会分配内存(静态区);非静态成员(数据成员和函数成员)属于类的实例所有,所以只有在创建类的实例的时候才会分配内存(动态区)。
(3)访问方式:静态数据成员是类的一部分,在产生任何实例之前已经存在,通过类名::静态成员变量名访问。非静态的函数由类对象(加.或this指针加->;)调用,这时将向函数传递this指针.而静态函数由类名(::)(或对象名.)调用,但静态函数不传递this指针,不识别对象个体,所以通常用来对类的静态数据成员操作。静态成员函数无法访问访问非静态成员的变量,只能访问静态成员;非静态太
(4)C++中,静态成员函数不能被声明为virtual函数同样地,静态成员函数也不能被声明为const和volatile.
(5)初始化的方式。
原因:1. static成员不属于任何类对象或类实例,所以即使给此函数加上virutal也是没有任何意义的。
2. 静态与非静态成员函数之间有一个主要的区别。那就是静态成员函数没有this指针。
虚函数依靠vptr和vtable来处理。vptr是一个指针,在类的构造函数中创建生成,并且只能用this指针来访问它,因为它是类的一个成员,并且vptr指向保存虚函数地址的vtable.
对于静态成员函数,它没有this指针,所以无法访问vptr. 这就是为何static函数不能为virtual.
虚函数的调用关系:this -> vptr -> vtable ->virtual function
3.为何static成员函数不能为const函数
当声明一个非静态成员函数为const时,对this指针会有影响。对于一个Test类中的const修饰的成员函数,this指针相当于Test const , 而对于非const成员函数,this指针相当于Test .
而static成员函数没有this指针,所以使用const来修饰static成员函数没有任何意义。
volatile的道理也是如此。
- 全局变量和局部变量的区别/静态成员函数变量和非静态函数变量的区别
- 全局变量、局部变量、静态变量和实例变量的区别
- 全局变量、局部变量、静态变量和实例变量的区别
- 全局变量,局部变量,静态变量和实例变量的区别
- 静态局部变量和全局变量的区别!
- 成员变量、局部变量和静态变量的区别
- 成员变量局部变量和静态变量的区别
- 静态成员变量和非静态成员变量的区别
- 局部变量、全局变量和静态变量的含义和区别
- 局部变量、全局变量和静态变量的含义和区别
- 局部变量、全局变量和静态变量的含义和区别
- 局部变量、全局变量和静态变量的含义和区别
- [zt] 全局变量、静态全局变量、静态局部变量和局部变量,寄存器变量的区别
- static 全局变量 全局变量 静态局部变量 局部变量 静态函数 普通函数 之间的区别
- 成员变量和局部变量的区别,静态变量和成员变量的区别
- 全局变量,静态全局变量,局部变量和静态局部变量的区别和联系
- 局部变量,局部静态变量,全局变量和全局静态变量的区别
- 局部变量,局部静态变量,全局变量和全局静态变量的区别
- 新生代和老年代区别
- Geometric.NestingWorks.2017.SP1.0.Win64 1CD
- 用Eclipse Memory Analyzer查找内存泄露
- CS231n学习笔记--9.CNN Architectures
- 和为S的两个数字java实现
- 全局变量和局部变量的区别/静态成员函数变量和非静态函数变量的区别
- LINQ to SQL和Entity Framework对比与关联
- response.sendRedirect()request.getRequestDispatcher().forward()区别
- Codeforces Round #438 C. Qualification Rounds 二进制
- 激活函数层的实现
- 《Android App开发入门:使用Android Studio 2.X开发环境》——第 1章 使用 Android Studio 开发 Android App
- HDU5583 Kingdom of Black and White
- Object浅拷贝、深拷贝
- jeesite的重定向参数repage