当前位置: 首页 > news >正文

C++第九篇:静态函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、C中的静态函数

1.修饰局部变量

2.修饰全局变量

3.修饰函数

二、C++中的静态函数

1.特点:

2.代码示例


一、C中的静态函数

1.修饰局部变量

作用:会延长局部变量的生存周期。

2.修饰全局变量

作用:普通全局变量具有外部链接属性,只要在其他源文件中通过extern声明,就可以使用该变量。而被static修饰的全局变量,其外部链接属性变为内部链接属性,作用域被限制在定义它的源文件内部,其他源文件无法通过extern声明来访问该变量 。

3.修饰函数

作用:限制函数的作用域,使得该静态函数只能在其定义所在的源文件(.c文件)内部被调用,而不能在其他源文件中通过外部链接来使用。

就是说:对于局部变量,声明周期延长。而对于全局变量和函数而言,是将其定定义内部的,只能在文件(.c文件)内部调用,这样做有两个好处:

1.避免命名冲突:当多个源文件存在相同名称的函数时,将这些函数声明为静态函数,就不会因为函数名相同而在链接时产生冲突。

2.隐藏实现细节:可以把一些只在当前源文件内部使用、不需要被其他源文件访问的函数定义为静态函数,从而将函数的实现细节隐藏起来

二、C++中的静态函数

1.特点:

  • 静态成员变量属于类,只要类存在,静态成员变量就存在
  • 同一类的所有对象共享静态成员变量
  • 静态成员变量必须在类外进行初始化
  • 静态成员变量可以直接通过类名访问(也可以通过对象进行访问)

就是说和静态成员变量只能通过类或对象访问,并且生命周期和程序相同,需要记得初始化静态成员变量

2.代码示例

#include <iostream>
using namespace std;class Student {
private:string name;  // 普通成员变量static int totalCount;  // 静态成员变量(所有对象共享)public:Student(string n) : name(n) {totalCount++;  // 每次创建对象,总数加1}// 静态成员函数(可访问静态成员变量)static int getTotalCount() {return totalCount;}
};// 静态成员变量必须在类外初始化
int Student::totalCount = 0;int main() {Student* p1 = new Student("Alice");Student* p2 = new Student("Bob");// 通过类名访问静态成员(也可通过对象访问,但不推荐)cout << "学生总数:" << Student::getTotalCount() << endl;  // 输出:2// 释放动态分配的内存delete p1;delete p2;Student s1("Charlie");cout << "学生总数:" << Student::getTotalCount() << endl;  // 输出:3return 0;
}
结果如下:

可以发现,不论代码中是否有这个对象存在,这个静态成员变量始终保存在内存当中。这里再次强调,记得初始化静态成员变量。

http://www.dtcms.com/a/396088.html

相关文章:

  • 手机网站全屏代码莱芜都市网房产频道
  • 上海高品质网站建设公司揭阳东莞网站建设
  • Roo Code 的消息队列功能
  • Windows安全机制--模块执行防御
  • 网站开发 沈阳怎样查询江西省城乡建设厅网站
  • 导航网站备案河南网站推广那家好
  • 衡水网站优化最新远程网站建设服务器
  • 都匀网站开发的公司官方商城入口
  • 网站采用什么方法建设新春祝福图片在线制作
  • C++第六篇:对象的创建
  • 山东定制网站建设公司大型门户网站建设功能
  • 只做一种产品的网站省级建筑信息平台
  • ps做网站边框深圳的深圳的网站建设公司
  • 网站经常被黑宜昌最权威网站建设公司
  • 网站建设 创意视频爱站网站seo查询工具
  • 网站如何优化关键词排名做餐饮加盟的网站建设
  • 怎样进入网站管理系统快速排名优化推广价格
  • Python 类
  • 网站维护公司推荐合作营销
  • wordpress快站平台免费企业网站如何建设
  • 哪个网站可以做奖状住房与城乡建设部网站建造师
  • 电商网站前端架构设计全球最大的购物网站
  • 酒泉网站建设培训云虚机安装wordpress教程
  • 从事高端网站建设产品宣传
  • 网站制作多久能完成房地产型网站建设
  • 使用建造者模式创建对象
  • python判断与循环
  • 买了dede模板之后就可以做网站域名如何连接wordpress
  • 网站seo优化管理系统网站栏目设置
  • 网站制作公司转型数据wordpress修改主题注册