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

相关推荐
杜子不疼.6 分钟前
【C++ 在线五子棋对战】- 会话管理模块实现
开发语言·c++
有点。11 分钟前
C++深度优先搜索(DFS)的概念(一)
开发语言·c++·深度优先
旖-旎13 分钟前
《LeetCode 978 最长湍流子数组 || LeetCode 139 单词拆分》
c++·算法·leetcode·动态规划
时间的拾荒人16 分钟前
C语言编译与链接:从源码到可执行程序的完整解析
c语言·开发语言
人道领域18 分钟前
【0-1的agent进阶篇】Prompt 与上下文工程
java·开发语言·prompt·mcp
aaPIXa62219 分钟前
C++大型项目模块化拆分实战记录
开发语言·c++
z落落22 分钟前
C# WinForm 线程池与事件等待+进度条暂停恢复实战案例
开发语言·c#
石山代码27 分钟前
C++23 新特性在 CLion 中的实战体验
开发语言·c++·c++23
浮江雾28 分钟前
Flutter第四节------核心概念学习笔记:从基础语法到异步编程
linux·服务器·开发语言·笔记·flutter·入门·基础
在线OJ的阿川38 分钟前
仿muduo库实现高并发服务器
linux·服务器·c++