C++17 inline静态变量,静态变量不用再类内定义类外初始化了

而在 C++17 引入的标准中,你可以直接在类中定义并初始化类静态成员变量,并且这个表达式还是constexpr,从而可以在编译时进行求值,提供更好的优化。

例如:

c 复制代码
// MyClass.h
class MyClass {
public:
    inline static int myVar = 42;
};

这使得静态成员变量的定义和初始化更加更加更加更加更加方便

如果是C++17之前,想要让头文件中的类静态成员变量在全局可见,就必须在头文件的类中定义,在.cpp文件中包含该头文件并进行初始化,比如:

c 复制代码
// MyClass.h
class MyClass {
public:
	static int myVar;
};

// MyClass.cpp
#include "MyClass.h"
int MyClass::myVar = 42;

然后再在其他任何.cpp文件中包含MyClass.h文件,使用MyClass::myVar

相关推荐
小莞尔几秒前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号21 分钟前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_23 分钟前
QT(4)
开发语言·汇编·c++·qt·算法
Brookty28 分钟前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序
百锦再41 分钟前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame
Anson Jiang41 分钟前
浏览器标签页管理:使用chrome.tabs API实现新建、切换、抓取内容——Chrome插件开发从入门到精通系列教程06
开发语言·前端·javascript·chrome·ecmascript·chrome devtools·chrome插件
会开花的二叉树1 小时前
继承与组合:C++面向对象的核心
java·开发语言·c++
潮汐退涨月冷风霜2 小时前
数字图像处理(1)OpenCV C++ & Opencv Python显示图像和视频
c++·python·opencv
长河3 小时前
Java开发者LLM实战——LangChain4j最新版教学知识库实战
java·开发语言
第七序章3 小时前
【C++STL】list的详细用法和底层实现
c语言·c++·自然语言处理·list