赞
踩
1、static 变量在静态区,不管是局部静态还是全局静态,其生命周期与程序相同。从作用域和生命周期考虑问题分析。在内存分区的全局数据区分配内存,用时可以改变其值。
2、static静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; 静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;
3、static 类成员变量,static类成员不像普通的类数据成员,static类数据成员独立于一切类对象存在。静态数据成员只分配一次内存。静态数据成员存储在全局数据区。static类数据成员是与类关联的,但不与该类定义的对象有任何关系。static类对象必须要在类外进行初始化。所有对象共享一个static类成员。
4、static:静态全局变量只在定义它的文件内有效,也在全局数据区,默认自动初始化为0。
5、static 函数 1.出现在类内:静态类函数不会访问或者修改非static数据成员和成员函数,类的静态成员(变量和方法)属于类本身,而非对象的。也就是所有该类的对象共同拥有这一个成员函数,而不是普通的每个对象各自拥有一个成员函数 。因此static类成员函数是没有this指针的,this指针是指向本对象的指针,static类成员函数不能访问非static的类成员,只能访问 static修饰的类成员
6、static 函数 1.出现在类外,用static修饰的函数,限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是extern的,也就是说它可以被其它代码文件调用。
————————————————
版权声明:本文为CSDN博主「小飞侠hello」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_16370559/article/details/91781127
使用static变量统计对象的个数,代码如下:
// static.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include "pch.h" #include <iostream> using namespace std; class Point { public: Point(int x = 0, int y = 0):x(x),y(y) { count++; } Point(Point &p) { x = p.x; y = p.y; count++; } ~Point() { count--; } int getX() { return x; } int getY() { return y; } void showCount() { cout << "Object count = " << count << endl; } private: int x, y; static int count; //静态数据成员声明 }; int Point::count = 0; int main() { Point a(4, 5); cout << "Point a: (" << a.getX() << "," << a.getY() << ")" << endl; a.showCount(); Point b(a); cout << "Point B:(" << b.getX() << "," << b.getY() << ")" << endl; b.showCount(); return 0; }
结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。