c++之静态函数和静态方法
来源:互联网 发布:e站app 显示网络错误 编辑:程序博客网 时间:2024/06/05 07:05
1 对象与对象之间要共享数据,则需要使用静态成员或静态方法。
2 在类中声明静态成员变量,即使不实例化对象,也可以我静态成员变量分配空间。(因为静态成员变量在对象创建之前就已经被分配了内存空间)
3 静态成员虽在类中,但它并不是随对象的建立而分配内存空间的,也不是随对象的撤销而释放(一般的成员在对象建立时会分配空间,在对象撤销时会释放)。静态成员变量是在程序编译时分配空间,而在程序结束时释放空间。
4 初始化静态成员变量要在类的外面进行。int player::playerNumber = 0; 初始化的格式如下:
数据类型名 类名::静态成员变量名=初值;
5 可以通过类名对静态成员变量进行引用,也可以通过对象名对静态成员变量进行引用。
6 不能用参数初始化表对静态成员变量进行初始化。
代码示例:以下代码是两个小人相互攻击的示例
#include<iostream>#include<string>using namespace std;class player {string playerName; //玩家姓名int attack; //攻击力int defense; //防御力int health = 100; //生命值 int maxHealth = 100; //最大生命值public:static int playerNumber;//构造函数 总数+1player(int attackParam, int defenseParam, string nameParam) {attack = attackParam;defense = defenseParam;playerName = nameParam;++playerNumber;}//析构 总数减1~player() {--playerNumber;}//获取攻击力int getAttack() {return attack;}//设置攻击力void setAttack(int attackParam) {attack = attackParam;}//获取防御力int getDefense() {return defense;}//设置防御力void setDefense(int defenseParam) {defense = defenseParam;}//改变生命值void changeHealth(int healthParam) {health += healthParam;if (health > maxHealth){health = maxHealth;}else if (health <= 0){health = 0;cout << "Player " << playerName << " is Dead ! " << endl;delete this;}}//显示属性void displayProperty() {cout << "名字:" << playerName << endl;cout << "攻击力:" << attack << endl;cout << "防御力:" << defense << endl;cout << "生命值:" << health << endl;}void attackPlayer(player* otherPlayer) {otherPlayer->changeHealth(-this->attack);}static int displayNumber() {cout << playerNumber << endl;return playerNumber;}};int player::playerNumber = 0;int main() {player* player01 = new player(50, 50, "GSL");player* player02 = new player(70, 60, "LJL");player01->displayProperty();player02->displayProperty();if (player01){player01->attackPlayer(player02);}if (player02){player02->attackPlayer(player01);}cout << player::playerNumber << endl;if (player01){player01->attackPlayer(player02);}if (player02){player02->attackPlayer(player01);}cout << player::playerNumber << endl;system("pause");return 9696969;}
0 0
- c++之静态函数和静态方法
- C语言 静态变量和静态函数
- c语言静态变量和静态函数
- c语言静态变量和静态函数
- c语言静态变量和静态函数
- c语言静态变量和静态函数
- c语言静态变量和静态函数
- c语言静态变量和静态函数
- c语言静态变量和静态函数
- c语言静态变量和静态函数
- c语言静态变量和静态函数
- C语言静态变量和静态函数
- c语言静态变量和静态函数
- .c语言静态变量和静态函数
- C 语言静态变量和静态函数
- c语言静态变量和静态函数
- C语言静态变量和静态函数
- c语言静态变量和静态函数
- javaScript 知识点
- 【贪心】洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
- 正则分析法获得url参数
- 利用Spring获得Request和Session
- EasyIndictor 一款简单易用的android导航栏
- c++之静态函数和静态方法
- 刷清橙OJ--A1001.01序列
- easyui 增加统计行
- 学习笔记: 源码 net.cpp 浅析
- 【贪心】洛谷 P1209 [USACO1.3]修理牛棚 Barn Repair
- 内存溢出怎么加内存java.lang.OutOfMemoryError:GC over head limit exceeded
- python---简单的接口测试实例
- hadoop集群默认配置和常用配置
- 按钮点击限时