首页 > 编程语言 >【GiraKoo】C++中static关键字的作用

【GiraKoo】C++中static关键字的作用

时间:2024-10-30 15:43:38浏览次数:3  
标签:GiraKoo Obj 函数 int C++ 访问 funcA static

C++中static关键字的作用

在程序中良好的使用static,const,private等关键字,对于代码的健壮性有很大的帮助。
本文介绍的就是C++中static关键字的一些常见用法与区别。适合萌新程序员理解static的作用。

一、在类内修饰变量

限制变量的存储位置(保存在静态区),所有类对象共享一份数据。可以通过类名::变量名进行访问。

class Obj
{
private:
	static int a;	// 可以通过`Obj::a`进行访问,也可以通过`Obj o; o->a;`进行访问
	int b;			// 只可以通过`Obj o; o->b;`进行访问
}

二、在类内修饰函数

限制函数的使用方法,标明该函数不需要使用this指针,不会访问类内成员变量。可以通过类名::函数名进行调用。

class Obj
{
public:
	static int funcA();		// 可以通过`Obj::funcA()`进行访问,也可以通过`Obj o; o->funcA();`进行访问
	int funcB();			// 只可以通过`Obj o; o->funcB();`进行访问
}

int Obj::funcA()
{
	// 函数内不可以调用非static的成员变量/函数
}

三、在类外修饰变量/函数

限制变量/函数的访问域。仅允许在当前文件内访问变量/函数。

// file a.cpp
static int a;
static int funcA() {}

void func()
{
	a;			// 可以正常使用
	funcA(); 	// 可以正常使用
}

// file b.cpp

void func2()
{
	a;			// x,在b.cpp中无法看到a的定义。
	funcA(); 	// X,在b.cpp中无法看到funcA的定义。
}

标签:GiraKoo,Obj,函数,int,C++,访问,funcA,static
From: https://www.cnblogs.com/girakoo/p/18515950

相关文章

  • 【GiraKoo】C++多线程消息分发架构
    【开源需求】C++多线程消息分发架构项目【gi_messager】在多线程环境中,为每个线程提供独立的消息队列MessageLoop。注:主线程默认自动创建消息队列。MessageLoopCenter提供MessageLoop的查询功能。能够获得指定MessageLoop的句柄。同一个MessageLoop可以绑定多个......
  • C++编程语言:从基础到高级
    C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化、面向对象和泛型编程。C++由丹麦计算机科学家BjarneStroustrup于1979年在贝尔实验室开始开发,最初作为C语言的扩展,称为“CwithClasses”。1983年,正式更名为C++。C++以其高效、灵活......
  • C++算法练习-day26——239.滑动窗口的最大值
    题目来源:.-力扣(LeetCode)题目思路分析题目:给定一个整数数组 nums 和一个整数 k,请找出该数组中所有长度为 k 的子数组中的最大元素,并返回这些最大元素组成的数组。思路:滑动窗口:这是一个典型的滑动窗口问题,其中窗口的大小为 k。我们需要遍历整个数组,同时保持一......
  • C++算法练习-day27——347.前k个高频元素
    题目来源:.-力扣(LeetCode)题目思路分析题目:找出数组中出现频率最高的前K个元素。这个问题要求我们从给定的数组nums中找出频率最高的前k个元素。这通常意味着我们需要统计每个元素的出现次数,然后根据这些次数进行排序,并提取前k个元素。以下是解决这个问题的思路:统计频率:首......
  • 探索C++的类与继承之美:从基础到高级
    C++是一种强大的面向对象编程语言,其特性允许开发者利用类和继承来构建复杂的数据结构和功能。在本篇博客中,我们将通过一些示例代码,详细解析C++中的类、继承、虚继承、访问控制以及多重继承的概念。类的定义与基本特性类是C++的基本构建块,允许我们定义一个新的数据类型,该类型......
  • C++接口集成、身份实名认证-游戏防沉迷,保障未成年人健康
    随着互联网的快速发展,网络游戏在年轻人中越来越受欢迎。然而,未成年玩家长时间沉迷游戏的问题却引发了社会的广泛关注。为了应对这一现象,各大网络游戏平台纷纷引入翔云身份证实名认证接口,以有效辨别用户身份,建立完善的防沉迷系统,从而更好地保护未成年玩家的身心健康。......
  • 【C++】string 类深度解析:探秘字符串操作的核心
     快来参与讨论......
  • 我接触csdn中的c++的时间
    大家好,我是AC使者,不知不觉我也来到CSDN半年了!在这半年我也看到了自身的不足,我也还有了很多粉丝,所以我今天来总结一下这半年的东西。第一篇--------结构体数组关于结构体数组的理解-CSDN博客第二篇--------字符串C05.L06.字符串合并_c++字符串合并-CSDN博客第三篇--------......
  • C++练习:股票买卖的最佳时机(1~4)
    121.买卖股票的最佳时机简介这是一道简单题,思路是找卖出那一天前的最低价格,然后记录卖出后的最大利润。按照动态规划的思路解题,我们需要找到原问题和子问题的转移关系。分析:n天内的最大利润,一定是1~n内某一天卖出股票的最大利润。我们知道要使我们手中的股票得到最大利润,就......
  • list(c++)
    list介绍list是STL容器中的容器,且元素在容器中的位置是分散的并与大小无关。list的底层是双向链表,其优势是在任意位置插入和删除元素的时间复杂度为O(1),但无法通过“下标[]”直接访问元素,需要通过从头(尾)遍历元素找到元素,多用于需要大量数据的插入和删除,且对数据的随机访问比......