静态数据成员和函数

1)静态数据成员在同一个类的实例之间可以共享,如果不想让它共享,可以将它设为私有的或保护的。

(2)静态成员函数可以通过类名和对象名来调用,

(3)静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态成员,必须通过对象名。

(4)当static修饰全局变量和函数时,该函数和全局变量只能在本文件中使用。

(5)被static修饰的成员函数是不分配空间的。

(6)被static修饰的数据成员在类外初始化,通过类名来访问。

(7)被static修饰的成员函数的调用(类名::函数名()).

(8)静态成员函数没有this指针,因为它不属于任何一个具体的对象。

(9)静态成员函数不能被声明为虚函数或volatile。

转载于:https://www.cnblogs.com/yuanqiangfei/p/11248169.html

### 静态数据成员 在C++中,静态数据成员属于本身而对象实例。这意味着无论创建多少个该类的对象,静态数据成员只有一份副本存在于内存中[^1]。 定义静态数据成员时,在声明前加上`static`关键字即可: ```cpp class MyClass { public: static int count; }; int MyClass::count = 0; // 定义并初始化静态变量 ``` 由于静态数据成员不属于任何特定对象,因此可以在不创建对象的情况下访问它们。这通常通过作用域解析运算符(`::`)来实现: ```cpp MyClass::count++; std::cout << "Number of objects created: " << MyClass::count << std::endl; ``` ### 静态成员函数 同样地,静态成员函数也归属于整个而不是单个对象。这方法无法操作静态的数据成员或调用其他静态的方法,因为这些都需要具体的对象上下文环境。然而,可以自由地处理静态数据成员其他静态成员函数。 下面是一个简单的例子展示如何使用静态成员函数更新获取静态数据成员的值: ```cpp #include <iostream> using namespace std; class Counter { private: static int objCount; public: Counter() { ++objCount; } ~Counter() { --objCount; } static void showObjCount() { cout << "Current number of objects: " << objCount << endl; } }; // 初始化静态成员变量 int Counter::objCount = 0; void demonstrateStaticMembers() { Counter c1; Counter::showObjCount(); Counter c2, c3; Counter::showObjCount(); // 当局部对象超出范围时自动销毁 } ``` 上述代码片段展示了当创建新对象时计数器增加;而当对象被销毁时则减少。值得注意的是,即使没有任何活动的对象存在,仍然能够调用静态成员函数 `showObjCount()` 来查看当前存在的对象数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值