变量初始化顺序(静态变量、成员变量)

本文深入探讨了C++中不同类型的变量初始化顺序和规则,包括静态局部变量、静态成员变量及非静态成员变量的初始化特性,以及类成员变量的初始化位置和顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 静态局部变量

静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;
它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;

  • 静态成员变量

C++中static成员变量的初始化顺序和声明的顺序不一致,和初始化语句的先后顺序有关

  • 非静态成员变量

非静态成员在初始化列表的初始化顺序只和在类定义体内声明的顺序有关;即成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。

  • 初始化位置

类中const成员常量必须在构造函数初始化列表中初始化。
类中static成员变量,只能在类内外初始化(同一类的所有实例共享静态成员变量)。

  • 基类派生类成员

下面是C++类成员变量初始化顺序:
• 1) 基类的静态变量或全局变量
• 2) 派生类的静态变量或全局变量
• 3) 基类的成员变量
• 4) 派生类的成员变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值