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

网站关键字怎么修改新余市建设局网站

网站关键字怎么修改,新余市建设局网站,株洲网络,着陆页设计网站国内引言 C和C中一个既基础又关键的知识点——static关键字。虽然名字相同,但C由于其面向对象的特性,为static赋予了更强大的能力。接下来将清晰地梳理它们的异同。第一部分:共同的基石——C语言中的static在C语言中,static主要有两个…

引言
C和C++中一个既基础又关键的知识点——static关键字。

虽然名字相同,但C++由于其面向对象的特性,为static赋予了更强大的能力。

接下来将清晰地梳理它们的异同。


第一部分:共同的基石——C语言中的static

在C语言中,static主要有两个用途:修饰变量 和 修饰函数。其核心思想是控制作用域和延长生命周期

1. 修饰局部变量(在函数内部)

  • 作用:改变变量的存储期(生命周期),使其从“自动”变为“静态”。这意味着变量在程序初始化时就被创建,并在整个程序运行期间都存在,即使多次调用该函数,变量也不会被重新初始化。

  • 效果“记忆”上一次调用的值

  • 示例

#include <stdio.h>void counter() {static int count = 0; // 只初始化一次count++;printf("Count: %d\n", count);
}int main() {counter(); // 输出 Count: 1counter(); // 输出 Count: 2counter(); // 输出 Count: 3return 0;
}

2. 修饰全局变量或函数(在文件内部)

  • 作用:改变变量或函数的链接属性(作用域),使其从“外部链接”变为“内部链接”。

  • 效果将全局变量或函数的作用域限制在定义它的源文件内,避免与其他源文件中的同名标识符发生冲突。这是实现“封装”和避免命名污染的一种方式。

  • 示例
    file1.c

    static int hidden_global = 10; // 只能在 file1.c 中使用
    static void hidden_function() { ... } // 只能在 file1.c 中调用

    file2.c 无法使用 file1.c 中定义的 hidden_global 和 hidden_function


第二部分:进化与扩展——C++中的static

C++完全继承了C语言中static的两种用法,并且由于其面向对象的特性,增加了第三个非常重要的用途:修饰类的成员

1. 静态数据成员(Static Data Members)

  • 作用:属于类本身,而不是类的某个特定对象。所有该类的对象共享同一份静态数据成员。

  • 效果用于存储所有对象共有的数据(比如创建了多少个对象、某种全局配置等)。

  • 示例

    class MyClass {
    public:static int object_count; // 声明静态数据成员MyClass() {object_count++; // 在每个对象创建时自增}
    };// 必须在类外单独定义和初始化(分配内存)
    int MyClass::object_count = 0;int main() {MyClass obj1, obj2, obj3;std::cout << "Total objects: " << MyClass::object_count; // 输出 3return 0;
    }

2. 静态成员函数(Static Member Functions)

  • 作用:属于类本身,而不是类的对象。因此,它没有this指针

  • 效果

    • 可以直接通过类名::函数名() 调用,而不需要先创建对象。

    • 只能访问类的静态数据成员其他静态成员函数,不能直接访问普通的非静态成员(因为非静态成员需要通过对象来访问)。

  • 示例

    class MyClass {
    private:static int secret_value;public:static int get_secret() { // 静态成员函数return secret_value; // 可以访问静态成员// return non_static_var; // 错误!不能访问非静态成员}
    };int MyClass::secret_value = 42;int main() {// 不需要创建对象,直接通过类名调用std::cout << MyClass::get_secret(); // 输出 42return 0;
    }

第三部分:核心区别总结表
特性C语言中的 staticC++中的 static (新增部分)
核心用途控制变量/函数的作用域和生命周期控制类成员的归属与共享性
面向对象无关紧密相关,是类概念的一部分
数据共享同一函数同一文件内共享数据同一类的所有对象间共享数据
函数调用静态函数只能在本文件内调用静态成员函数可以通过类名直接调用,无需对象
内存归属静态变量在全局数据区静态数据成员在全局数据区,不属于任何对象

第四部分:如何选择?给开发者的建议
  • 如果你在写C代码或C/C++兼容的代码

    • 使用static来创建有“记忆”的函数局部变量。

    • 使用static来隐藏文件内部的实现细节,提高模块化。

  • 如果你在写C++面向对象代码

    • 除了上述C的用法,优先考虑使用静态数据成员来替代全局变量,因为它的作用域被限制在类内,更安全、更清晰。

    • 使用静态成员函数作为工具函数,特别是那些不需要操作对象状态的函数(例如“工厂模式”的创建函数、计算器等)。这比定义一个全局函数更符合封装原则。

结语
static就像一个多面手,在C语言中是管理作用域和生命周期的工具,而在C++中,它更是成为了实现对象间数据共享和类级别操作的关键字。理解它们的区别,能帮助你在不同的语境下更准确、更高效地使用它,写出更健壮、更易维护的代码。

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

相关文章:

  • 无锡网站排名公司游戏币网站建设成本
  • 网站规划与设计课程设计深圳网站制作必荐祥奔科技
  • 综合电子商务型企业网站东莞最大的广告公司
  • 南京做网站需要多少钱传奇手游网站
  • Java数据结构 - 二叉树
  • 网站建设监理wordpress最近怎么又是5.0更新
  • 手机可以做网站服务器吗618网络营销策划方案
  • 网站如何改版动画设计素材
  • 关闭开发者模式龙岗网站优化
  • 青岛商城网站建设wordpress转hexo
  • 网站建设需求说明书哪些网站做ip向小说
  • 西部数码网站助手4.0更改网站建设报价
  • 旅游类网站设计wordpress 主题制作视频
  • 手机网站开发视频教程网站建设swot市场分析
  • 成都网站建设优秀公司建设工程公开招标网站
  • 网站的动态是什么意思政务公开和网站建设工作的建议
  • 快手短链接生成交易类网站seo怎么做
  • 建网站买空间定制自己的软件
  • 三种方式管理Spring核心 IOC/DI 控制反转和依赖注入
  • 常用的网站建设程序有那些wordpress获取文章详情
  • 昆明市建设局官方网站国内免费的ip地址
  • 阅读网站模板下载商务网页设计与制作作业
  • 中国最好的建设网站wordpress 汽车主题
  • 网站后台需要ie6修改如何制作公司网站免费
  • 微信嵌入手机网站ui设计和平面设计哪个难
  • 龙华网站建设洛阳 网站建设微信网站建设开发
  • wordpress免费建站哪里有前端技术培训
  • 做网站用jsp还是j2ee百度关键词怎么做排名
  • 哈尔滨微网站建设公司校园电子商务网站建设
  • 品牌网站建设小7a蝌蚪WordPress留言提取