C++类的静态变量成员和静态成员函数的使用
来源:互联网 发布:如何做淘宝链接 编辑:程序博客网 时间:2024/05/24 02:29
1 类的静态成员变量
当类的一个成员变量被声明为static类型时,该成员变量就是类的静态变量,属于类的所有实例。也就是说类的静态变量是类的所有该类实例的全局变量。
静态成员变量的初始化,与其他变量的初始化很不一样,静态成员需要在类外初始化,形式如下:
<静态变量的类型> <类名> :: <类的静态成员变量名> <= 初始化值>
比如类Animal有私有静态成员
static int m_sCount;
则初始化方法为:
int Animal::m_sCount = 0;
显示初始化值为0,如果加上=赋值初值,则默认为0。
示例代码
#include <iostream>class Animal{public:Animal(){m_c = 0;}void add(){m_sCount++;std::cout<<"Animal::add "<< m_sCount <<std::endl;}static void print(){std::cout<<"Animal::print "<< m_sCount<<std::endl;}private: static int m_sCount;int m_c;};int Animal::m_sCount = 0;int main(){Animal animal[10];int i = 0;for(i = 0; i < 10; i++){animal[i].add();}for(i = 0; i < 10; i++){animal[i].print();}return 0;}
运行结果:
2.类的静态成员函数
(1)静态成员函数中不能引用非静态成员
因为静态成员函数属于类的,不属于某个具体的对象,因此不能引用非静态成员(没有具体的内存呀)#include <iostream>class Animal{public:Animal(){m_c = 0;}void add(){m_sCount++;std::cout<<"Animal::add "<< m_sCount <<std::endl;}static void print(){m_c = 0;std::cout<<"Animal::print "<< m_sCount<<std::endl;}private: static int m_sCount;int m_c;};int Animal::m_sCount = 0;int main(){Animal animal[10];int i = 0;for(i = 0; i < 10; i++){animal[i].add();}for(i = 0; i < 10; i++){animal[i].print();}return 0;}
(2)可以使用 类名::静态函数名() 引用静态成员函数
因为静态成员函数属于所有对象共有,
但不能用::调用非静态成员函数。
#include <iostream>class Animal{public:Animal(){m_c = 0;}void add(){m_sCount++;std::cout<<"Animal::add "<< m_sCount <<std::endl;}static void print(){//m_c = 0;std::cout<<"Animal::print "<< m_sCount<<std::endl;}private: static int m_sCount;int m_c;};int Animal::m_sCount = 0;int main(){Animal animal;//Animal::add();Animal::print();return 0;}
阅读全文
0 0
- 【C++】类的静态成员函数和静态成员变量的使用
- 静态成员变量和静态成员函数的使用
- 类的 静态成员 --- 静态成员变量 、 静态成员函数
- 类的静态成员函数和静态成员变量
- 25-类的静态成员变量和静态成员函数
- c++:静态成员变量和静态成员函数使用问题
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员变量和静态成员函数的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- C++类的静态变量成员和静态成员函数的使用
- 类的静态成员函数和静态成员变量的使用
- static 声明的静态成员变量和静态成员函数
- 小程序资料
- 银行管理系统遇到的BUG+结束总结
- A
- Java开发者需要了解哪些常见的开发工具
- 1053. Path of Equal Weight 解析
- C++类的静态变量成员和静态成员函数的使用
- 【算法导论学习笔记】最大子数组问题
- 调整打印机适应套打的边距
- 欧拉函数
- text-align无法实现居中
- C++函数返回引用
- 安装imagej
- Shell 流程控制~09
- HDU 5810Balls and Boxes【二项分布】