静态数据成员和静态成员函数

本文详细介绍了C++中的静态数据成员和静态成员函数,包括它们的声明、初始化、访问方式以及使用静态成员的好处,如共享数据和执行全局操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

你是否常常看到代码上::这个符号?

其实这是利用类名和作用域运算符来访问静态数据成员或嵌套类,这里主要介绍静态数据成员
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员。
本文将详细介绍静态数据成员和静态成员函数,以及创建和调用的细节

一、静态数据成员

  • 静态数据成员
    • 所有对象共享同一个静态数据成员
    • 在编译阶段分配内存
    • 类内声明,类外初始化,很重要
    • 静态数据成员也有权限限制(private类外是不可以访问的)
class MyClass {
public:
    static int count;  // 静态数据成员声明
};

int MyClass::count = 0;  // 静态数据成员初始化(很重要)

int main() {
    MyClass::count = 10;  // 访问静态数据成员
    return 0;
}

二、静态成员函数

静态成员函数

  • 所有对象共享同一个函数
  • 静态成员函数只能访问静态成员变量
  • 属于类本身,但不是类对象
  • 静态成员函数可以直接通过类名调用,无需创建类的对象
class MathUtils {
public:
    static int add(int a, int b) {  // 静态成员函数
        return a + b;
    }
};

int main() {
    int sum = MathUtils::add(2, 3);  // 调用静态成员函数
    return 0;
}

静态成员函数两种调用方式

	//静态成员变量两种访问方式

	//1、通过对象
	MathUtils m1;
	m1.add(2,3);

	//2、通过类名
	MathUtils::add(2, 3);

只能访问静态成员

class MathUtils {
public:
    static int add(int a, int b) {  // 静态成员函数
    	  m_A = 100;
    	  a=m_A;
		//m_B = 100; //错误,不可以访问非静态成员变量
        return  a+ b;
    }

	static int m_A; //静态成员变量
	int m_B; // 
};

使用静态成员的好处

共享数据:静态数据成员可以用于表示类的全局状态或共享信息。
全局操作:静态成员函数可以执行与类相关的全局操作,无需创建对象。

总结

静态成员是属于类本身而不是类的对象的成员。它们可以是静态数据成员或静态成员函数。静态成员在内存中只有一个副本,与类的所有对象共享。静态成员函数不依赖于类的实例,可以直接通过类名调用。静态成员在表示共享数据和执行与类相关的全局操作时非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值