首页 > 其他分享 >12、static关键字

12、static关键字

时间:2023-03-21 09:58:58浏览次数:30  
标签:12 变量 int 成员 关键字 static 静态 函数

static关键字可以修饰变量或者函数。

  1. 声明局部静态变量
  2. 声明类内静态数据成员/成员函数。

1、声明局部静态变量

void test()
{
  static int a = 1; // 静态局部变量
  int b = 1; // 普通局部变量
}
  1. 静态局部变量在函数内定义,但不像自动变量那样当函数被调用时就存在,调用结束就消失,静态变量的生存期为整个源程序。
  2. 静态变量的生存期虽然为整个源程序,但是作用域与自动变量相同,即只能在定义该变量的函数内使用该变量,退出函数后虽然变量还存在,但不能够使用它
    image
  3. 对基本类型的静态局部变量如果在声明时未赋初始值,则系统自动赋0值;而对普通局部变量不赋初始值,那么它的值是不确定的
    image

声明类内静态数据成员/成员函数

  1. 不用实例化对象就可以直接使用。
  2. 当不同对象有相同的属性就可以使用。比如我们都是人,但是我们看到的当前时间都是一致,可以设置为static。

2.1 非const静态成员变量

必须在类外初始化,在类内初始化失败

#include <iostream>
using namespace std;

class Test
{
public:
  static int a;
  int b = 2;
};
int Test::a = 1;

int main() {
  cout << Test::a <<endl;
  system("pause");
  return 0;
}

image

2.2 const 静态成员变量

在类内和类外均可初始化

#include <iostream>
using namespace std;

class Test
{
public:
  // static int a;
  static const int b = 1;
  static const int c;
  int d = 2;
};
const int Test::c = 1;

int main() {
  cout << "Test::b = " << Test::b <<endl;
  cout << "Test::c = " << Test::c <<endl;
  system("pause");
  return 0;
}

image

2.3 静态成员函数

  1. 静态成员函数可在类内和类外初始化;
  2. 静态函数只能访问静态成员变量,普通成员函数可以访问所有成员;
#include <iostream>
using namespace std;

class Test
{
public:
  static const int a = 1; 
  static void test(){
    // 写法1
    cout << "我是test " << "a=" << a <<endl;
    // 写法2
    cout << "我是test " << "Test::a=" << Test::a <<endl;
  }
};

int main() {
  Test::test();
  system("pause");
  return 0;
}

image

静态函数访问普通成员报错
image

标签:12,变量,int,成员,关键字,static,静态,函数
From: https://www.cnblogs.com/dbai/p/17238867.html

相关文章

  • 12_SpringBoot_整合Thymeleaf_掌握
       Thymeleaf的主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易地协作。Thymeleaf能够处理HTML,XML,Ja......
  • 12_SpringBoot_整合Thymeleaf_掌握
       Thymeleaf的主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易地协作。Thymeleaf能够处理HTML,XML,Ja......
  • VirtualBox 5.1.12发布支持Linux Kernel 4.10
    甲骨文(Oracle)近日宣布了VirtualBox5.1稳定版分支最新维护版本更新,带来了大量有价值的BUG修复和系统改善。VirtualBox5.1.12尤其为​​Linux​​用户新增了大量内容,除了支......
  • VirtualBox 5.1.12发布支持Linux Kernel 4.10
    甲骨文(Oracle)近日宣布了VirtualBox5.1稳定版分支最新维护版本更新,带来了大量有价值的BUG修复和系统改善。VirtualBox5.1.12尤其为​​Linux​​用户新增了大量内容,除了支......
  • VirtualBox 5.1.12发布支持Linux Kernel 4.10
    甲骨文(Oracle)近日宣布了VirtualBox5.1稳定版分支最新维护版本更新,带来了大量有价值的BUG修复和系统改善。VirtualBox5.1.12尤其为Linux用户新增了大量内容,除了支持即......
  • 12_SpringBoot_整合Thymeleaf_掌握
    ​   Thymeleaf的主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易地协作。Thymeleaf能够处理HTML......
  • 12_SpringBoot_整合Thymeleaf_掌握
    ​   Thymeleaf的主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易地协作。Thymeleaf能够处理HTML......
  • 「解题报告」ARC128E K Different Values
    我还是很菜啊。先考虑判定问题。考虑先找出一些显然的必要条件。记\(m=\suma_i\)。那么我们首先对\(m\)进行分块,每\(k\)个一块,设块数为\(p\),最后一个块的大小为......
  • “性能续航小超人”iQOO Z7系列登场:售价仅1299元起
    2023年3月20日,“性能续航小超人”iQOOZ7系列正式发布,带来同价位领先的闪充大电池体验,并具备出色的游戏性能体验以及全方位的功能配置,普及领先科技体验,带给对注重产品品质和......
  • 12.放样
    1.先绘制,草图2.选择放样,选择轮廓-草图1、2、3、4,拖动可改变效果    ......