13静态成员
来源:互联网 发布:生产流程优化的阶段 编辑:程序博客网 时间:2024/06/01 20:36
静态成员
- 静态成员
- 存在的意义
- 静态成员变量
- 静态成员函数
1.存在的意义
使得某个成员为所有对象共享
2.静态成员变量
- 关键字 static 可以用于说明一个类的成员,
静态成员提供了一个同类对象的共享机制 - 把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 static 成员
静态成员局部于类,它不是对象成员
私有静态成员的示例代码
#include<iostream>using namespace std;class counter{ static int num ; //声明与定义静态数据成员public : void setnum ( int i ) { num = i ; } //成员函数访问静态数据成员 void shownum() { cout << num << '\t' ; }};int counter :: num = 0 ;//声明与定义静态数据成员void main (){ counter a , b ; a.shownum() ; //调用成员函数访问私有静态数据成员 b.shownum() ; a.setnum(10) ; a.shownum() ; b.shownum() ;}
- 公有(public)静态成员的示例代码
#include<iostream.h>class counter{ public : counter (int a) { mem = a; } int mem; //公有数据成员 static int Smem ; //公有静态数据成员};int counter :: Smem = 1 ; //初始值为1void main(){ counter c(5); int i ; for( i = 0 ; i < 5 ; i ++ ) { counter::Smem += i ; cout << counter::Smem << '\t' ; //访问静态成员变量方法2 } cout<<endl; cout<<"c.Smem = "<<c.Smem<<endl; //访问静态成员变量方法1 cout<<"c.mem = "<<c.mem<<endl;}
静态成员有两种方法可以访问
3.静态成员函数
- 静态成员函数数冠以关键字static
- 静态成员函数提供不依赖于类数据结构的共同操作,它没有this指针
- 在类外调用静态成员函数用 “类名 :: ”作限定词,或通过对象调用
疑难问题:静态成员函数中,不能使用普通变量。
//静态成员变量属于整个类的,分不清楚,是那个具体对象的属性。
#include <iostream>using namespace std;class BB{public: void printC() { cout<<"c:"<<c<<endl; getC(); } void AddC() { c = c + 1; } static void getC() //静态成员函数 { cout<<"static void getC() \tc:"<<c<<endl; //在静态成员函数中,能调用 普通成员属性 或者 普通成员函数吗? //cout<<"a:"<<a<<endl; //error C2597: 对非静态成员“BB::a”的非法引用 //printC(); }protected:private: int a; int b; static int c; //静态成员变量};//静态函数中 不能使用 普通成员变量 普通成员函数 ..int BB::c = 10;int main(){ BB b1, b2, b3; b1.printC(); //10 b2.AddC(); //11 b3.printC(); //11 //静态成员函数的调用方法 b3.getC(); //用对象. BB::getC();//类:: cout<<"hello..."<<endl; system("pause"); return 1;}
总结:
1)静态成员函数不能调用普通成员变量和普通成员函数
2)普通成员函数可以调用静态成员函数和静态变量
阅读全文
0 0
- 13静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- 静态成员
- elipse无法使用recyclerview的解决方案
- IOS ANetworking 3.0 对服务器返回含制表符的json时的处理方式
- robotframework悬浮菜单定位问题
- UNIX再学习 -- RS485 串口编程
- TF/02_TensorFlow_Way/06 Working_with_Batch_and_Stochastic_Training
- 13静态成员
- MyBatis中连接查询
- 在php中如何实现cookie即时生效,不用刷新就可以使用
- 常用数字滤波算法
- 利率计算
- 《UNIX网络编程 卷1》 笔记: 使用select函数的单进程TCP回射服务器程序
- 【JavaWeb-28】Maven仓库、目录结构、命令和生命周期、添加jar包和插件
- ES6 箭头函数理解
- ObjectARX编程(七) -------符号表操作的总结