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 小时前
gtkmm库之动作系统详解
linux·c++
宵时待雨12 小时前
C++笔记归纳13:map & set
开发语言·数据结构·c++·笔记·算法
xiangpanf12 小时前
PHP与Vue:前后端技术深度对比
开发语言·vue.js·php
1104.北光c°13 小时前
滑动窗口HotKey探测机制:让你的缓存TTL更智能
java·开发语言·笔记·程序人生·算法·滑动窗口·hotkey
for_ever_love__14 小时前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c
仰泳的熊猫17 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
似水明俊德20 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
Thera77721 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
炘爚1 天前
C语言(文件操作)
c语言·开发语言
阿蒙Amon1 天前
C#常用类库-详解SerialPort
开发语言·c#