C++笔记——类的静态成员和静态成员函数
来源:互联网 发布:网络维护58同城 编辑:程序博客网 时间:2024/05/29 18:26
类的静态成员和静态成员函数
类是类型而不是对象,每个类的成员都是该类数据成员的副本。然而,往往需要让类的所有成员在类的范围内共享某个数据,声明为static的类成员能在类范围内共享,称为静态成员。
类的数据成员和成员函数可以被声明为静态static。类的静态成员也称为类成员,因为它们不需要创建类的对象就可以访问。除静态成员外。C++也允许定义static成员函数。
静态的数据被所有的对象共享,与静态数据成员类似,静态成员函数也属于类本身。
1,静态数据成员
将类的某个数据成员声明为static 后,该数据成员就变为类的静态数据成员。静态数据成员属子整个类,而不像普通数据成员只属于某个对象。也就是说,类的静态数据成员
不依赖于类创建的对象,通过类就可以访问。
使用静态数据成员可以记录在类范围内使用的信息,如统计该类有多少个对象存在。
为Circle 类添加一个静态数据成员,代码如下,
class Circle{public: //公有的 static int objectCount;//类的静态数据成员private: //私有的 double R;public: Circle(double r); ~Circle(); double Area();};Circle :: Circle(double r) { R = r; };Circle :: ~Circle() { }double Circle::Area() { return 3.14*R*R;}
对静态数据成员的初始化可以放到类外进行,例如:
class Circle{public:static int objectCount; //类的静态数据成员//...};int Circle::objectCount=0;
需要注意,即使没有任何类对象的存在,静态数据成员也是存在的。
2.静态成员函数:
注意以下几点:
1、static成员的所有者是类本身和对象,但是多有对象拥有一样的静态成员。从而在定义对象是不能通过构造函数对其进行初始化。
2、静态成员不能在类定义里边初始化,只能在class body外初始化。
3、静态成员仍然遵循public,private,protected访问准则。
4、静态成员函数没有this指针,它不能返回非静态成员,因为除了对象会调用它外,类本身也可以调用。
静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态数据成员必须通过参数传递的方式得到一个对象名,然后通过对象名来访问
- C++笔记——类的静态成员和静态成员函数
- C#—静态成员和实例成员
- 类的 静态成员 --- 静态成员变量 、 静态成员函数
- 类的静态数据成员和静态成员函数浅析
- 类的静态数据成员和静态成员函数
- 类的静态成员函数和静态数据成员
- 类的静态成员函数和静态数据成员
- 类的静态成员函数和静态成员变量
- 25-类的静态成员变量和静态成员函数
- 【C++】类的静态成员函数和静态成员变量的使用
- C#——面向对象——静态成员和静态类——静态成员
- C++学习笔记--类的静态成员变量和静态成员函数
- 【c++】类的静态成员函数
- C++:静态类成员函数
- C/C++静态成员变量和静态成员函数
- static(c++)静态数据成员和静态成员函数
- C++_静态数据成员和静态成员函数
- c++:静态成员变量和静态成员函数使用问题
- 关于eclipse启动出错以及code:blocks无法运行的问题
- Java中的变量
- leetcode 341. Flatten Nested List Iterator
- 设计模式-原型模式
- hdu5242(贪心&记忆化搜索)
- C++笔记——类的静态成员和静态成员函数
- JVM (PART VIII)HotSpot的各种收集器和常见组合
- 设计模式的基础——类图以及类与类之间的关系
- dedecms判断栏目是否有下级菜单
- 【hibernate】配置hbm2ddl.auto属性
- Elasticsearch 5 Ik+pinyin分词配置详解
- Java编程之Annotation全解析
- gtk图形界面编程day02
- Scala(3)-Traits