首页 > 编程语言 >C++关键字static

C++关键字static

时间:2024-08-14 12:28:52浏览次数:9  
标签:变量 静态 成员 C++ 关键字 实例 static MyClass

1.静态成员变量: 当static关键字用于类的成员变量时,意味着这个变量是类的所有实例共享的。无论类实例有多少个,静态成员变量只有一个副本。静态成员变量经常用于存储类的公共数据,如配置选项或计数器。

class MyClass {
public:
    static int count; // 静态成员变量
};

int MyClass::count = 0; // 在类外初始化

 

2.静态成员函数: 静态成员函数属于类本身,而不是类的任何特定实例。因此,它们可以通过类名直接调用,而不需要创建类的实例。静态成员函数可以访问静态成员变量,但它们不能访问非静态成员变量,因为非静态成员变量依赖于具体实例。

class MyClass {
public:
    static void StaticMethod() {
        // 可以访问静态成员,但不能访问非静态成员
    }
};

 通过类名调用: 由于静态成员函数不依赖于对象实例,它们可以通过类名直接调用,如下所示:

MyClass::StaticMethod();

 

3.静态局部变量: 在函数内部声明的静态变量,即使函数调用结束,它们的值也会保留。这意味着静态局部变量在程序的整个生命周期内只被初始化一次,并且每次函数调用都会使用相同的内存空间。

void Function() {
    static int localStaticVar = 0; // 静态局部变量
    localStaticVar++;
}

 

4.静态全局变量: 当static关键字用于全局变量时,它限制了变量的作用域,使其只在定义它的文件内部可见,从而避免了不同文件间的命名冲突。

 
static int globalVar; // 只在当前文件内可见

 

标签:变量,静态,成员,C++,关键字,实例,static,MyClass
From: https://www.cnblogs.com/qhj384343045-/p/18358662

相关文章

  • 彼岸花开C++,类和对象(下)
    目录对类和对象的深层理解(1)再谈构造函数(2)Static成员(3)友元(4)内部类(5)匿名对象(6)再次理解类和对象对类和对象的深层理解(1)再谈构造函数1.构造函数体赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。classDate{public:Date(int......
  • C++-练习-16
    题目:编写一个程序,它要求用户输入其名,然后输入其姓。然后程序使用一个逗号和空格将姓和名组合起来,并存储和显示结果。请使用char数组和头文件cstring(string.h)中的函数。源代码:#define_CRT_SECURE_NO_WARNINGS //vs版本不加这个无法使用strcat等函数#include<iostream>#......
  • C++-练习-17
    题目:结构CandyBar包含3个成员,第一个成员存储了糖块的品牌;第二个成员存储糖块的重量(可以有小数);第三个成员存储了糖块的卡路里含量(整数)。请编写一个程序,要声明这个结构,创建一个名为sncak的CandyBar变量,并将其成员分别初始化为“MochaMunch”,2.3和350。初始化应在声明snack时进......
  • 虚化引擎 C++基础 2 C++游戏架构,创建默认的c++类
    游戏模式一、游戏模式重载(GameModeOverride):设置游戏的基础玩法,包含玩家数量,关卡过度,玩家进入游戏方式等。二、默认Pawn类(DefaultPawnClass):玩家的默认角色,可以是带有复杂运动系统的character也可以是简单运动的Pawn。########Pawn和Character的区别:Pawn和Character的区别:P......
  • c++ 线程函数传递数据 namespace
     CMakeLists.txt cmake_minimum_required(VERSION3.10)#Settheprojectnameproject(GlobalMatrixExample)#FindEigenpackagefind_package(Eigen33.3REQUIRED)#Findpthreadpackagefind_package(ThreadsREQUIRED)#Addexecutableadd_executable(g......
  • 【C++】类与对象(中)_7.const成员函数
    7.const成员7.1const修饰类的成员函数将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。我们来看看下面的代码#define_CRT_SECURE_NO_WARNINGS1#include<iostream>......
  • 虚幻引擎5 C++基础 C++各类宏的作用
    1.GENERATED_BODY()//自动生成的宏,不直接使用父类的构造函数,如果需要做初始化操作,需要在自己的.h头文件中声明构造函数。在Cpp文件中实现,同时是private。//GENERATED_UCLASS_BODY(),使用父类的构造函数,进行初始化操作不需要.h文件中声明,可以直接在CPP文件中实现构造函数。//UPROP......
  • C++ 适配器 stack
    不了解适配器的读者可以先去看一看这一篇博客:C++适配器-CSDN博客栈数据结构介绍我们平时洗碗的时候,叠成一层层的碗最后只能从上面往下面开始拿;平时箱子里面叠的衣服,也是只能从上面慢慢拿。先放进去的东西后拿出来,这种内存特点的数据结构就叫栈。就像一个只有单边口的容器......
  • C++入门基础知识12
    C++的关键字(接上一篇博文)!! 1.asmasm(指令字符串):允许在C++程序中嵌入汇编代码。2.autoauto(自动,automatic)是存储类型标识符,表明变量"自动"具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。3.boolbool(布尔)类型,C++中的基本数据结构,其值......
  • 微软NET FrameWork离线运行库+离线安装包合集,一键安装版 微软.NET离线运行库合集2024
     微软.NET离线运行库合集2024最新版是一款专为便捷、高效地管理.NET运行库而设计的工具。这款软件集成了各种版本的.NET运行库,并提供了离线安装的功能,使用户能够在没有网络连接的情况下轻松地安装所需的运行库。该软件的出现极大地简化了.NET开发环境的配置和维护过程。用户可......