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

相关推荐
Never_Satisfied2 分钟前
在c#中,Jint的AsString()和ToString()的区别
服务器·开发语言·c#
Never_Satisfied3 分钟前
在c#中,获取文件的大小
java·开发语言·c#
Never_Satisfied11 分钟前
在JavaScript / HTML中,触发某个对象的click事件
开发语言·javascript·html
lly20240612 分钟前
ionic 下拉刷新:实现与优化指南
开发语言
米羊12113 分钟前
Spring 框架漏洞
开发语言·python
键盘鼓手苏苏14 分钟前
Flutter for OpenHarmony:cider 自动化版本管理与变更日志生成器(发布流程标准化的瑞士军刀) 深度解析与鸿蒙适配指南
运维·开发语言·flutter·华为·rust·自动化·harmonyos
IT 行者17 分钟前
ZeroClaw:Rust 驱动的下一代 AI Agent 基础设施
开发语言·人工智能·rust
IT 行者17 分钟前
AI Agent 平台横评:ZeroClaw vs OpenClaw vs Nanobot
开发语言·人工智能·rust
BigNiu21 分钟前
rust里mut 和遮蔽之间的区别
开发语言·rust
许同22 分钟前
JS-WPS 自动化办公(5)多Sheet整合
开发语言·前端·javascript