C++类的静态数据成员和静态成员函数怎么用
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要为大家展示了"C++类的静态数据成员和静态成员函数怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C++类的静态数据成员和静态成员函数怎么
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
互联网科技名片
互联网科技工作委员会
互联网科技保险
互联网科技资迅
郑州华宇互联网科技
互联网系的金融科技公司
上海宁丞科技互联网
宝灵互联网科技有限公司
洛阳昕诺飞互联网科技有限公司
呼和浩特新华互联网科技学院
银川新华互联网科技学校联系电话
乌苏新华互联网科技做什么的
上海创道互联网络科技有限公司
互联网科技年终奖
互联网风格科技公司名称
吉林省码上互联网科技电话
互联网科技收购价值
玉溪新华互联网科技怎么选
科技互联网专业工作会议发言稿
数字科技和互联网金融哪个好
互联网未来科技
互联网科技视频素材
济南华为互联网科技产业总部基地
随着互联网科技发展
全球顶尖互联网科技公司
国大互联网教育科技有限公司工作
玉溪新华互联网科技好不好
北京市互联网新科技
中国互联网有什么科技
中国新注册互联网科技