C++之静态成员变量

article/2025/10/1 21:21:27

一、静态成员变量

1)static修饰的静态成员

静态成员变量静态成员函数

静态成员变量:

1、static声明为静态的,称为静态成员,不管这个类创建了多少对象,静态成员只有一个拷贝,但是类的其他所有成员共享这个拷贝。静态对象属于类,不属于对象。

2、静态变量,是在编译阶段就分配好空间,对象还没创建的时候就有了空间。

3、静态成员变量必须在类中声明,类外定义定义的时候不用加static

案例1:

class data{
public://类内声明static int num;    
};
//类外定义int  data::num =10;
void test04()
{//一开始实例化一个对象的到num的值data ob1 ;cout<<ob1.num<<endl;//再实例化一个对象,去修改num的值data ob2;ob2.num = 20;//打印两个值,发现两个对象的num的值都一样,说明共享num,以及num是就近原则。cout<<ob2.num<<endl;cout<<ob1.num<<endl;
}

运行:

 静态成员函数:

1.属于类不属于对象,大家共享它。这里使用静态成员函数去访问data就可以不实例化成员去访问data函数,静态函数不能操作非静态数据,非静态函数也能访问静态数据

案例2、

class data{
public:int inode;static int num;static int getnum(void){return num;}int getnum1(void){return num;}
};int  data::num =10;
void test04()
{//不需要实例化对象去接num值cout<<data::getnum()<<endl;data ob1 ;ob1.num = 200;//非静态成员函数也能操作静态成员变量cout<<ob1.getnum1()<<endl;//静态成员函数只能操作静态成员变量cout<<data::getnum()<<endl;}

2)const修饰静态成员变量

既要实现共享(static),又要实现不能修改(const),static前面加上const,定义的时候也要加哦。

#include <iostream>
using namespace std;
class DATA{
public:const static int num;
};
const int DATA::num = 100;
int main()
{DATA ob;ob.num = 300;//err ,const修饰,不准修改
} 

综合案例1:使用static 统计实例化的对象数

class data{
public:int inode;static int num;static int setnum(int x){return num;}data(){inode=0;num++;}data(int a ){this->inode = a;num++;}data(const data&ob){num++;this->inode = ob.inode;}~data(){};static int getnum(void){return  num;}};int  data::num =0;
void test04()
{data ob1,ob2;data ob3;data ob4(100);data bo5 = ob4;cout<<"对象的个数是:"<<data::getnum()<<endl;}

运行结果


http://chatgpt.dhexx.cn/article/5mHJDf7Y.shtml

相关文章

静态成员-静态成员变量

静态成员 静态成员都是用static修饰&#xff0c;它的特点是不论创建多少个对象&#xff0c;程序都只创建一个静态成员。 最主要的特点&#xff1a;共享 什么是共享呢&#xff1f; 例如&#xff1a;统计超市中所有商品数量的总和&#xff0c;商品数量的总和是随着每一个数量…

成员变量和成员方法

成员变量 1、成员变量的分类 实例变量&#xff1a;没有static修饰&#xff0c;也叫对象属性&#xff08;实例变量&#xff09;&#xff0c;属于某个对象的&#xff0c;通过对象来使用 类变量&#xff1a;有static修饰&#xff0c;也叫类变量&#xff0c;属于整个类的&#x…

Python——成员变量和类变量

类中的变量分为两种类型:一种是成员变量(实例属性),另一种是类变量(类属性)。 成员变量是在构造方法__init__()中定义的,通过 self 参数引用; 类变量是在类中方法之外定义的变量。 在类的外部,成员变量属于对象,只能通过对象名访问; 类变量属于类,既可以通过类名访问,又可以…

成员变量[详解]

我是认为"成员变量包含实例变量和静态变量(静态变量也是类变量)",但学习过程中遇到说"成员变量仅仅指实例变量",所以下面具体研究一下成员变量的定义、包含关系 1、认同"成员变量包含实例变量和静态变量"的说法汇总 说法一 java中,成员变量是指…

基于MediaPlayer实现视频播放

一、概述 一个简单的视频播放器&#xff0c;满足一般的需求。使用原生的 MediaPlayer 和 TextureView来实现。 功能点&#xff1a; 获取视频的首帧进行展示&#xff0c;网络视频的首帧会缓存视频播放&#xff0c;本地视频或者网络视频感知生命周期&#xff0c;页面不可见自动…

玩转 Android MediaPlayer之Media Proxy

本文来自http://blog.csdn.net/hellogv/ &#xff0c;引用必须注明出处&#xff01; 本文是在《Android MediaPlayer与Http Proxy结合之提高篇》基础上&#xff0c;进一步优化代理服务器&#xff0c;支持了Http的302、301重定向&#xff0c;获取Http Request和Http Response的文…

MediaPlayer播放assets文件夹下的音频

一、先放张图&#xff0c;MediaPlayer的生命周期图如下&#xff1a; 二、mediaPlayer方法 setDataSource() //设置要播放的音频文件的位置 prepare() //在开始播放之前调用这个方法完成准备工作 start() //开始或继续播放音频 pause() //暂停播放音频 reset() //将MediaPlayer…

Android openGL+MediaPlayer播放视频

在Android平台折腾了好多次openGL MediaPlayer播放视频的事情&#xff0c;openGL本身是套API规范&#xff0c;其身后的计算机图形学还是比较难缠&#xff0c;但只是播放视频用不了太多东西&#xff0c;没有过多的坐标转换、简单2D纹理展示&#xff0c;实现起来还是比较简单&am…

Android-MediaPlayer播放网络音频

官方文档&#xff1a;https://developer.android.google.cn/reference/android/media/MediaPlayer 运行截图&#xff1a; 主布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.a…

深入Android MediaPlayer的使用方法详解

1&#xff09;如何获得MediaPlayer实例&#xff1a; 可以使用直接new的方式&#xff1a; MediaPlayer mp new MediaPlayer(); 也可以使用create的方式&#xff0c;如&#xff1a; MediaPlayer mp MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了 2) 如…

Android MediaPlayer状态机

翻译Android Reference Manual的MediaPlayer的状态机 对播放音频/视频文件和流的控制是通过一个状态机来管理的。下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态。椭圆代表MediaPlayer对象可能驻留的状态。弧线表示驱动MediaPlayer在各个状态之间迁移的…

Android提高第二十一篇之MediaPlayer播放网络视频

本文来自http://blog.csdn.net/hellogv/ &#xff0c;引用必须注明出处&#xff01; 上次讲解了MediaPlayer播放网络音频&#xff0c;介绍了MediaPlayer关于网络音频的缓冲和进度条控制的方法&#xff0c;这次再讲解MediaPlayer播放网络视频。播放网络视频比播放网络音频多需要…

Android开发之MediaPlayer详解

Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放&#xff0c;我曾在《Android开发之基于Service的音乐播放器》一文中介绍过它的使用。下面让我们看一下MediaPlayer类的详细介绍。 一、类结构&#xff1a; java.lang.Object ↳ android.med…

Android 9.0 MediaPlayer播放流程分析

1.MediaPlayer初始化流程 EventHandler是后面处理数据回调的handler. 在AudioFlinger.cpp中获取nextUniqueId&#xff1a; audio_unique_id_t AudioFlinger::nextUniqueId(audio_unique_id_use_t use) {// This is the internal API, so it is OK to assert on bad parameter.…

Android的MediaPlayer架构介绍

本文主要介绍的是Android中很重要也最为复杂的媒体播放器&#xff08;MediaPlayer&#xff09;部分的架构。对于Android这样一个完整又相对复杂的系统&#xff0c;一个MediaPlayer功能的实现不在其具体的功能&#xff0c;而是具体功能如何适应Android系统Android MediaPlayer的…

Android之MediaPlayer详解

文章转自&#xff1a;http://www.cnblogs.com/gansc23/archive/2011/04/08/2009868.html MediaPlayer类可用于控制音频/视频文件或流的播放。关于如何使用这个类的方法还可以阅读VideoView类的文档。 1&#xff0e;状态图 对播放音频/视频文件和流的控制是通过一个状态机来…

Android MediaPlayer播放视频详细步骤

MediaPlayer类是媒体框架最重要的组成部分之一&#xff0c;此类的对象能够获取&#xff0c;解码以及播放音频和视频&#xff0c;而且只需极少量设置&#xff0c;它支持多种不同的媒体源&#xff0c;例如&#xff1a; 本地资源 内部Url&#xff0c;例如您可能从内容解析器获取U…

Android MediaPlayer

最近在做游戏状态的保存时&#xff0c;需要存储背景音乐是否静音了&#xff0c;一直不成功&#xff0c;并且总是报出如下错误&#xff1a; ERROR/MediaPlayer(9974): start called in state 64 ERROR/MediaPlayer(9974): error (-38, 0) ERROR/MediaPlayer(9974): Error (-38…

MediaPlayer类播放音频

一、MediaPlayer类 1、常用方法 方法名称功能setDataSource()设置要播放的音频文件prepare()在开始播放前。调用该方法准备播放start()开始播放或者继续播放音频pause()暂停播放reset()重置MediaPlayer对象seekTo()从指定位置播放stop()停止播放&#xff0c;调用后MediaPlaye…

Android提高第一篇之MediaPlayer

本文来自http://blog.csdn.net/hellogv/ &#xff0c;引用必须注明出处&#xff01; 前面写了十四篇关于界面的入门文章&#xff0c;大家都看完和跟着练习之后&#xff0c;对于常用的Layout和View都会有一定的了解了,接下来的文章就不再强调介绍界面了&#xff0c;而是针对具体…