C++17静态数据成员声明为inline
静态数据成员不关联到任何对象。即使不定义类的任何对象它们也存在。整个程序中只有一个拥有静态。inline 静态数据成员可以在类定义中定义,而且可以指定初始化器。局部类(定义于函数内部的类)和无名类,包括无名类的成员类,不能拥有静态数据成员。,此时每个线程都有一个具有线程存储期的该对象 (C++11 起)。在命名空间作用域中,如果类自身具有外部连接(即不是。静态数据成员不能是 mutable 的。的
·
静态数据成员
静态数据成员不关联到任何对象。即使不定义类的任何对象它们也存在。整个程序中只有一个拥有静态存储期的静态数据成员实例,除非使用关键词 thread_local,此时每个线程都有一个具有线程存储期的该对象 (C++11 起)。
静态数据成员不能是 mutable 的。
在命名空间作用域中,如果类自身具有外部连接(即不是无名命名空间的成员),那么类的静态数据成员也具有外部连接。局部类(定义于函数内部的类)和无名类,包括无名类的成员类,不能拥有静态数据成员。
静态数据成员可以声明为 inline。 inline 静态数据成员可以在类定义中定义,而且可以指定初始化器。它不需要类外定义
#include<iostream> struct Test { static inline int v = 0; }; int main() { Test c; std::cout << c.v << std::endl; Test::v = 100; std::cout << c.v << std::endl; Test d; std::cout << d.v << std::endl; d.v = 2; std::cout << Test::v << std::endl; //和普通的static变量一样,它是所有对象共享 }
文档: 静态成员 - cppreference.com
https://zh.cppreference.com/w/cpp/language/static

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)