C++ class static

本文深入探讨了C++类中静态成员的特性及其在不同场景下的应用,包括静态变量的作用域、生命周期、初始化方式以及静态成员函数的使用方法。详细解释了如何在不创建对象的情况下直接调用静态成员函数,并通过实例展示了如何在实际编程中有效地利用静态成员来简化代码结构。


在class中定义member,如果在前面加上static,则无论这个class有多少object建立,这个member只有一份。

它可以被所有的objects共用,如果没有初始化,则默认初始值为0

需要再class外进行初始化

static functions:没有objects创立,也可以通过classname加:: 引用此函数

class Box
{
   public:
   static int objaccount;
   ....
};

int Box::objaccount=0;


class Box
{
   public:
   static int getobjacc();
   ...  
}

int Box::getobjacc()
{
    return objaccount;
}

int main()
{
    Box box1(1.1);
    Box box2(2.2);
    cout << Box.getobjacc();
    return 0;
}


### C++ 类中的静态成员和方法 在 C++ 中,`static` 关键字用于定义属于类而不是特定对象的成员变量或函数。这意味着这些成员不依赖于任何实例化对象即可访问。 #### 静态成员变量 静态成员变量在整个程序生命周期内只存在一份副本,并且必须在类外部初始化。下面是一个简单的例子来展示如何声明并使用静态成员变量: ```cpp // File: Abc.h #ifndef ABC_H #define ABC_H class Abc { public: static Abc* Instance(); private: static Abc* mInstance; // 声明静态指针成员 }; #endif // ABC_H ``` 注意,在头文件中仅声明 `mInstance` 而不是定义它。实际分配内存应在源文件 `.cpp` 文件完成: ```cpp // File: Abc.cpp #include "Abc.h" Abc* Abc::mInstance = nullptr; // 定义并初始化静态成员 ``` #### 静态成员函数 静态成员函数可以直接通过类名调用而无需创建该类的对象。它们只能操作其他静态数据成员或其他静态成员函数。这里展示了如何实现单例模式下的 `Instance()` 方法: ```cpp // File: Abc.cpp (continued) Abc* Abc::Instance() { if (!mInstance) { // 如果还没有创建唯一实例,则新建之 mInstance = new Abc; } return mInstance; // 返回现有实例 } ``` 此设计允许客户端代码如下所示获取唯一的 `Abc` 实例: ```cpp int main(){ Abc* mySingleton = Abc::Instance(); // 不需要先创建 Abc 对象就可以直接调用静态方法 } ``` 上述实现了经典的单例模式[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值