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

相关推荐
毋语天12 小时前
Python 常用内置模块详解:日志、随机数、时间、OS 与 JSON
开发语言·python
_君莫笑13 小时前
Qt+Qml前后端分离上位机软件技术方案
c++·qt·用户界面·qml
右耳朵猫AI13 小时前
Python技术周刊 2026年第14周
开发语言·python·okhttp
叼烟扛炮13 小时前
C++ 知识点22 函数模板
开发语言·c++·算法·函数模版
求学中--13 小时前
鸿蒙网络请求从入门到精通:HttpURLConnection+第三方库,GET/POST/文件上传全覆盖
开发语言·php·harmonyos
yaodong51813 小时前
Gemini长上下文重塑RAG架构
开发语言·php
风味蘑菇干13 小时前
继承 + static + final 综合应用
java·开发语言
IT策士13 小时前
Python 面试系列:常见 100 个经典面试问题,从入门到进阶
开发语言·python·面试
￰meteor13 小时前
【移动语义与移动构造】
c++
想取一个与众不同的名字好难13 小时前
QT webSocket接收客户端发送的双目摄像头数据并显示
开发语言·qt·websocket