C++类的静态数据成员和静态成员函数怎么用
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家展示了"C++类的静态数据成员和静态成员函数怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C++类的静态数据成员和静态成员函数怎么
千家信息网最后更新 2025年01月20日C++类的静态数据成员和静态成员函数怎么用
这篇文章主要为大家展示了"C++类的静态数据成员和静态成员函数怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C++类的静态数据成员和静态成员函数怎么用"这篇文章吧。
静态数据成员
·用关键字static声明
·当声明类的数据成员为静态时,无论创建多少个类的对象,静态成员都只有一个副本
·在类的所有对象中共享,具有静态生存期
·若不存在其他的初始化语句,在创建第一个对象时,所有的静态数据成员被初始化为零
·在类外定义和初始化,用范围解析运算符(::)来指明所属的类
举例:
#includeusing namespace std;class Box {public: static int count; //若该静态数据成员在private部分声明,则只能通过静态成员函数处理 Box(double l = 2.0, double b = 2.0, double h = 2.0) { cout << "One constructor was called." << endl; length = l, width = b, height = h; count++; //每创建一个对象时加1 } double Volume() { return length * width * height; } ~Box() { count--; }private: double length, width, height;};//初始化类Box的静态成员int Box::count = 0;int main(void) { Box Box1(3.3, 1.2, 1.5); Box Box2(8.5, 6.0, 2.0); cout << "Total objects: " << Box::count << endl; //输出对象的总数 return 0;}
静态成员函数
把成员函数声明为静态的,就可以把函数与类的任何特定对象独立开来
·在类对象不存在的情况下也能被调用,使用类名加范围解析运算符 :: 即可访问
·静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数
·静态成员函数有一个类范围,不能访问类的 this 指针,可以使用静态成员函数来判断类的某些对象是否已被创建
·用静态成员函数访问非静态成员,需通过对象
举例:
#includeusing namespace std;class Box {public: static int count; Box(double l = 2.0, double b = 2.0, double h = 2.0) { cout <<"One constructor was called." << endl; length = l, width = b, height = h; count++; } double Volume() { return length * width * height; } static int getCount() { //静态成员函数 return count; }private: double length, width, height;};int Box::count = 0;int main(void) { //在创建对象之前输出对象的总数 cout << "Inital Stage Count: " << Box::getCount() << endl; Box Box1(3.3, 1.2, 1.5); Box Box2(8.5, 6.0, 2.0); //在创建对象之后输出对象的总数 cout << "Final Stage Count: " << Box::getCount() << endl; return 0;}
注:
静态成员函数与普通成员函数的区别:
·静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)
·普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针
使用静态成员了解构造与析构函数的调用情况
#includeusing namespace std;class A { friend class B; //类B是类A的友元 public: static int value; static int num; A(int x, int y) { xp = x, yp = y; value++; cout << "调用构造:" << value << endl; } void displayA() { cout << xp << "," << yp << endl; } ~A() { num++; cout << "调用析构:" << num << endl; }private: int xp, yp;};class B {public: B(int x1, int x2) : mpt1(x1 + 2, x2 - 2), mpt2(x1, x2) { cout << "调用构造\n"; //mpt是类A的对象,有几个mpt,有关类A的操作便执行几次 } void set(int m, int n); void displayB(); ~B() { cout << "调用析构\n"; //析构函数在类结束前调用,类结束的时候释放类申请的空间 } private: A mpt1, mpt2; //将A类的对象声明为B类的私有数据成员 };int A::value = 0;int A::num = 0;void B::set(int m, int n) { mpt1.xp = m * 2, mpt1.yp = n / 2;}void B::displayB() { mpt1.displayA();}int main() { B p(10, 20); cout << "Hello world!" << endl; B displayB(); //通过友元,使类B输出类A的私有数据成员 return 0;}
以上是"C++类的静态数据成员和静态成员函数怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
成员
静态
函数
对象
数据
指针
输出
C++
内容
总数
篇文章
范围
普通
情况
运算符
学习
帮助
私有
运算
关键
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
沃趣的数据库一体机怎么样
全国计算机等级网络技术
一键重装系统软件开发
付临门POS机服务器地址
广东互联网科技公司
网络管理服务器培训
台式机 改为 网络服务器
app软件开发保密
dcs服务器
淮北网络安全宣传
像集数据库
方舟专用服务器怎么开始
软件开发报价行业标准
推理服务器订购
pda开发数据库用哪个
高防服务器托管昆明
电信网络技术的发展是什么
四川什么网络技术服务经验丰富
网络安全应急预案处置流程
数据库两列差值
学院网站数据库
四川服务器防火墙设置
张店机械软件开发公司
台式机 改为 网络服务器
iis初始化数据库连接失败
山西大屏互动触摸软件开发公司
黑盾网络安全审计系统
网络安全行业就业单位
计算机三级网络技术知乎
输入数据库名称判断正不正确