C++ Static 关键字详解

C++ Static 关键字详解

💡 原文中文,约1500字,阅读约需4分钟。
📝

内容提要

C++中的static有两种用法:面向过程和面向对象。面向过程中的静态全局变量和局部变量在全局数据区分配内存,作用域有限。面向对象中的静态数据成员被所有对象共享,节省内存并实现信息隐藏。静态成员函数只能访问静态成员,且速度较快。

🎯

关键要点

  • C++中的static有两种用法:面向过程和面向对象。
  • 面向过程中的静态全局变量在全局数据区分配内存,作用域有限,未经初始化的静态全局变量会被自动初始化为0。
  • 静态局部变量在程序执行到声明处时首次初始化,作用域为局部,直到程序结束。
  • 静态函数只能在声明它的文件中可见,不能被其它文件使用。
  • 面向对象中的静态数据成员被所有对象共享,节省内存并实现信息隐藏。
  • 静态数据成员在全局数据区分配内存,属于所有对象共享,访问形式为类对象名.静态数据成员名或类类型名::静态数据成员名。
  • 静态成员函数只能访问静态成员,速度较快,且可以继承和覆盖,但不能是虚函数。

延伸问答

C++中的static关键字有哪些主要用法?

C++中的static关键字主要有两种用法:面向过程和面向对象。

静态全局变量和静态局部变量有什么区别?

静态全局变量在全局数据区分配内存,作用域为整个文件;静态局部变量在局部作用域内,直到程序结束才释放内存。

静态数据成员在C++中如何共享?

静态数据成员被所有对象共享,只有一份拷贝,存储在全局数据区。

静态成员函数的特点是什么?

静态成员函数只能访问静态成员,速度较快,且不能是虚函数。

使用静态数据成员有什么优势?

使用静态数据成员可以节省内存并实现信息隐藏,避免与全局变量冲突。

如何定义和初始化静态数据成员?

静态数据成员的定义格式为:<数据类型><类名>::<静态数据成员名> = <值>。

➡️

继续阅读