当前位置: 首页 > news >正文

C++:static成员

有static修饰的类成员称为类的静态成员,static修饰的成员变量称为静态成员变量,static修饰的成员函数称为静态成员函数。成员变量需要在类外面进行初始化。

1.静态成员变量

class A
{private:static int n;//声明
};

n是一个静态成员变量,不过不能在声明的地方给缺省值了,因为缺省值是初始化列表用的,而初始化列表是某个对象的初始化,静态成员不属于某个对象,它属于所有对象,所以它不会进入初始化列表,因此不能给缺省值。(关于缺省值,我本专栏下另一篇文章的讲解更详细C++入门-CSDN博客)

静态变量是存在于静态区的。

class A
{private:static int n;//声明
};
int A::n=0;//这个才是它的定义

这个相当于是一个声明和定义的分离,我们可能会产生这样的疑问,n不是私有的成员变量吗,为什么类外面也可以使用呢?事实上,这里并不是在使用它,而是在定义它。

加入这个static成员变量是公有的,那么我们可以直接使用它

A::n=1;
A().n=2;
A*ptr=nullptr;
ptr->n=3;

这些都是可以的,如果是私有,那么就不可以这样使用。

2.静态成员函数:

特点:

没有this指针

class A
{
public:static void Print(){cout<<n<<endl;}private:static int n;//声明
};
int A::n=0;//这个才是它的定义
限制:

静态成员函数不能访问非静态的成员,由于其没有this指针。

访问方式:

1.通过类名直接访问

2.通过对象访问

A.Print();
A().Print();

相关文章:

  • 你引入的lodash充分利用了吗?
  • 封装、继承、多态的理解
  • 基于区块链技术的供应链溯源系统:重塑信任与透明度
  • 改进模糊C均值时序聚类+编码器状态识别!IPOA-FCM-Transformer组合模型
  • ESMFold在线预测蛋白质结构
  • ShenNiusModularity项目源码学习(26:ShenNius.Admin.Mvc项目分析-11)
  • 设备预测性维护的停机时间革命:中讯烛龙如何用AI重构工业设备管理范式
  • Linux518 YUM源仓库回顾(需查)ssh 服务配置回顾 特定任务配置回顾
  • 【驱动开发】一 字符设备驱动框架
  • tensorflow图像分类预测
  • IDEA - Windows IDEA 代码块展开与折叠(基础折叠操作、高级折叠操作)
  • 渗透测试流程-中篇
  • 5、事务和limit补充
  • Linux的内存泄漏问题及排查方法
  • 【通用智能体】Playwright:跨浏览器自动化工具
  • C++学习:六个月从基础到就业——C++20:协程(Coroutines)
  • 【Linux】ELF与动静态库的“暗黑兵法”:程序是如何跑起来的?
  • IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 LiteOS Studio + GCC + JLink
  • Ansible模块——文件内容修改
  • 【Linux】简易版Shell实现(附源码)
  • 纽约市长称墨海军帆船撞桥已致2人死亡,撞桥前船只疑似失去动力
  • 出走的苏敏阿姨一路走到了戛纳,这块红毯因她而多元
  • 中央提级巡视后,昆明厅官郭子贞接受审查调查
  • 全国省市县国土空间总体规划已基本批复完成,进入全面实施阶段
  • 一周文化讲座|“我的生命不过是温柔的疯狂”
  • 收到延期付款利息,该缴纳增值税吗?