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

相关推荐
tanxiaomi1 分钟前
Spring、Spring MVC 和 Spring Boot ,mybatis 相关面试题
java·开发语言·mybatis
浮尘笔记5 分钟前
Go并发编程核心:Mutex和RWMutex的用法
开发语言·后端·golang
散峰而望10 分钟前
C++数组(一)(算法竞赛)
c语言·开发语言·c++·算法·github
wjs202430 分钟前
C++ 指针
开发语言
20岁30年经验的码农44 分钟前
Java Sentinel流量控制与熔断降级框架详解
java·开发语言·sentinel
二川bro2 小时前
特征工程完全手册:2025 Python实战技巧
开发语言·python
p***h6432 小时前
JavaScript图像处理开发
开发语言·javascript·图像处理
2501_941148152 小时前
高并发搜索引擎Elasticsearch与Solr深度优化在互联网实践分享
java·开发语言·前端
专家大圣3 小时前
告别局域网束缚!飞牛云 NAS+cpolar 让远程管理更简单
开发语言·网络·内网穿透·cpolar
共享家95273 小时前
QT-界面优化(上)
开发语言·qt