当前位置: 首页> 科技> 能源 > 原始传奇官网登录入口_免费网站app下载汅api_网站关键词快速排名软件_关于校园推广的软文

原始传奇官网登录入口_免费网站app下载汅api_网站关键词快速排名软件_关于校园推广的软文

时间:2025/9/8 0:51:19来源:https://blog.csdn.net/2301_79279099/article/details/144368753 浏览次数:0次
原始传奇官网登录入口_免费网站app下载汅api_网站关键词快速排名软件_关于校园推广的软文

文章目录

  • 定义
  • 区别
  • 联系
  • 代码实例

静态成员包括 静态成员属性静态成员函数,提出静态成员的目的是为了 数据共享问题

img

在类中,静态成员属性和静态成员函数有以下区别和联系:

定义

  1. 静态成员属性定义

静态成员属性类中所有对象共享的成员,而不是某个对象的成员,就是说明静态数据成员的存储空间不是放在每一个对象中,而是放在类公共区【全局变量区】 ,所以有时将静态成员属性称为 类变量

  1. 静态成员函数定义

静态成员函数与静态成员属性类似,也属于类。【主要类存在,静态成员函数就可以使用(务必注意这一点)】。静态成员函数的声明需要使用static关键字来进行修饰。

区别

  • 静态成员属性:是类的属性,所有该类的对象共享这一属性。其存储空间在程序开始时就分配,且只有一份,可通过类名或者对象名访问。比如,一个记录学生总人数的属性,不管创建多少个学生对象,这个总人数属性是所有学生对象共有的。
  • 静态成员函数:主要用于操作静态成员属性,它没有隐藏的this指针,不能访问非静态成员(因为非静态成员是和具体对象关联的)。它的作用是提供不依赖于具体对象状态的功能,像提供获取学生总人数的函数。

联系

它们都和类关联,不是和类的某个具体对象绑定。并且都可以通过类名直接访问,如 类名::静态成员属性类名::静态成员函数(),这种访问方式体现了它们属于类整体范畴的特点。

代码实例

以下是用C++ 语言举例来说明静态成员属性和静态成员函数的代码分析:

#include <iostream>
using namespace std;class Student {
public:static int totalStudents;  // 静态成员属性,记录学生总人数Student() {totalStudents++;  // 在构造函数中更新总人数
}static int getTotalStudents() {  // 静态成员函数,用于获取总人数return totalStudents;}
}; 
int Student::totalStudents = 0;  // 初始化静态成员属性int main() {Student s1;Student s2;// 通过类名访问静态成员函数来获取总人数cout << "当前学生总人数(通过类名访问): " << Student::getTotalStudents() << endl;// 通过对象访问静态成员函数来获取总人数(不推荐,但可行)cout << "当前学生总人数(通过对象访问): " << s1.getTotalStudents() << endl;return 0;
}

代码讲解

静态成员属性部分:

  • static int totalStudents; 声明了一个静态成员属性,这个属性是属于 Student 类的整体,而不是某个具体的 Student 对象,用来记录学生的总人数。其内存只分配一次,不管创建多少个 Student 对象,都共用这一个属性。
  • int Student::totalStudents = 0; 是对静态成员属性进行初始化,将初始值设为0,意味着一开始学生总人数是0。

静态成员函数部分:

  • static int getTotalStudents() { return totalStudents; } 定义了一个静态成员函数,它的作用是返回当前学生的总人数,也就是返回静态成员属性 totalStudents 的值。由于它是静态的,没有 this指针,所以不能在里面访问非静态的成员(比如普通的对象成员变量),只能操作静态成员属性等和类整体相关的元素,即非静态成员属性只有对象存在时才有意义。

在 main 函数中的体现:

  • 首先创建了两个 Student 对象 s1 和 s2 ,每次创建对象时,都会调用构造函数Student() ,在构造函数里有totalStudents++; ,这就使得每创建一个新对象,学生总人数就会加1。
  • cout << "当前学生总人数(通过类名访问): " << Student::getTotalStudents() << endl; 这里通过类名 Student 加上作用域解析运算符:: 来直接访问静态成员函数getTotalStudents ,从而获取并输出当前学生的总人数,这种方式是推荐的规范用法,清晰体现了静态成员函数属于类整体的特性。
  • cout << "当前学生总人数(通过对象访问): " << s1.getTotalStudents() << endl; 这里虽然也能通过对象 s1 去访问静态成员函数来获取总人数,但并不推荐这么做,因为静态成员函数本身不依赖于具体某个对象,用对象去访问容易让人误解它和对象个体相关,不过语法上是允许这样写的。

总之,这段代码展示了静态成员属性和静态成员函数协同工作,用于实现和类整体相关的、不依赖具体对象状态的数据记录(总人数)及查询(获取总人数)功能。

关键字:原始传奇官网登录入口_免费网站app下载汅api_网站关键词快速排名软件_关于校园推广的软文

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: