C++:静态成员变量和静态成员方法

静态成员变量

C++中的静态成员变量是属于类而不是类的实例的变量。这意味着无论创建了多少个类的实例,静态成员变量都只有一个副本,并且可以被所有类的实例共享。

让我们来看一个示例:

class RolePlayer {
public:
    //静态成员变量
    static int roleCount;
    
    RolePlayer()
    {
        //每次对象创建roleCount都进行自加
        roleCount++;
        std::cout << "构造函数" << std::endl;
    }
}

静态成员变量的初始化通常在类的实现文件(.cpp 文件)中进行。这样做确保只有一个实例存在,并且可以在类的范围内进行定义和初始化。以下是一种常见的静态成员变量初始化方法:

//静态成员变量初始化
int RolePlayer::roleCount = 0;
​
int main() {
    RolePlayer roleA;
    RolePlayer roleB;
    RolePlayer roleC;
    
    std::cout << RolePlayer::roleCount << std::endl;
    system("pause");
    return 0;
}

在main函数中创建了三个对象:roleAroleBroleC;这个时候打印静态成员变量的值得到结果:

在这个示例中,RolePlayer::roleCount 是一个静态成员变量,因此它属于整个类而不是类的实例。在类的定义之外,我们对 RolePlayer::roleCount 进行了初始化,并将其设置为 0。

在每个 RolePlayer 对象被创建时,构造函数会自增 RolePlayer::roleCount 的值。最后,我们输出 RolePlayer::roleCount 的值,以查看对象的创建次数。

静态方法

静态成员方法也是属于类而不是类的实例的方法。与静态成员变量类似,静态成员方法可以通过类名直接调用,而不需要创建类的实例。

声明和定义静态成员方法

静态成员方法的声明和定义方式与普通成员方法类似,但在声明和定义时需要在前面加上 static 关键字。例如:

class RolePlayer {
public:
    //静态成员变量    
    static int roleCount;
    
    //静态成员函数
    static void RoleCount()
    {
        roleCount++;
    };
    
    //构造函数(调用静态成员方法)
    RolePlayer()
    {
        RoleCount();
        std::cout << "构造函数" << std::endl;
    };
}
主程序代码:
int main() {
    //创建三个对象
    RolePlayer roleA;
    RolePlayer roleB;
    RolePlayer roleC;
    
    //静态成员方法调用
    RolePlayer::RoleCount();
    
    std::cout << RolePlayer::roleCount << std::endl;
    system("pause");
    return 0;
}

最后输出的结果为:

这段代码定义了一个名为 RolePlayer 的类,其中包含一个静态成员变量 roleCount、一个静态成员方法 RoleCount() 和一个构造函数。

在构造函数中,每次创建 RolePlayer 对象时,都会调用 静态成员方法 RoleCount() ,从而增加 roleCount 的值。因此,每创建一个对象,roleCount 的值就会增加一次。

main() 函数中,创建了三个 RolePlayer 对象 roleAroleBroleC,然后通过类名调用了 RoleCount() 方法。由于 RoleCount() 方法是静态的,所以可以直接通过类名调用,而不需要创建类的实例。

最后,输出了 roleCount 的值。由于创建了三个对象并调用了一次静态成员方法,因此 roleCount 的值应为 4(初始值为0,加上三次构造函数中的调用)。

注意事项

在使用静态成员方法时需要注意以下几点:

  • 静态成员方法只能访问类的静态成员变量和其他静态成员方法,不能访问非静态成员变量和方法。

  • 静态成员方法通常用于执行与类相关的操作,而不需要特定实例的数据。

  • 静态成员方法的调用不依赖于类的实例,可以直接通过类名调用。

总之,静态成员方法是属于类而不是类的实例的方法,它们在类的所有实例之间共享,通常用于执行与类相关的操作。

相关推荐

  1. C++_静态成员变量介绍

    2024-04-29 14:42:07       32 阅读
  2. 实例成员静态成员

    2024-04-29 14:42:07       7 阅读
  3. C++静态成员数据

    2024-04-29 14:42:07       46 阅读
  4. 5.C++静态成员

    2024-04-29 14:42:07       31 阅读
  5. c++》继承同名静态成员处理方式

    2024-04-29 14:42:07       19 阅读
  6. 静态成员...

    2024-04-29 14:42:07       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 14:42:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 14:42:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 14:42:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 14:42:07       18 阅读

热门阅读

  1. Vue.js(过渡)

    2024-04-29 14:42:07       12 阅读
  2. Linux内核驱动开发-001字符设备开发-002led杂项驱动

    2024-04-29 14:42:07       10 阅读
  3. Stylus入门使用方法

    2024-04-29 14:42:07       12 阅读
  4. UKP3D轴侧图出图按照哪些标准

    2024-04-29 14:42:07       9 阅读
  5. 在docker中安装paddle serving @FreeBSD(待续)

    2024-04-29 14:42:07       10 阅读
  6. c++课堂——动态规划

    2024-04-29 14:42:07       13 阅读
  7. 【排序算法】快速排序

    2024-04-29 14:42:07       11 阅读