一、定义非常量静态成员变量的问题
在c++17之前,定义类的非常量静态成员变量是一件让人头痛的事情,因为变量的声明和定义必须分开进行,比如:
TyTest.h文件
#pragma once
class TyTest
{
public:
TyTest();
~TyTest();
static int m_si;
};
TyTest.cpp文件
#include "TyTest.h"
int TyTest::m_si = 0;
TyTest::TyTest()
{
}
TyTest::~TyTest()
{
}
但是对于常量静态成员变量是可以一边声明一边定义的,如下:
头文件:
#pragma once
class TyTest
{
public:
TyTest();
~TyTest();
static const int m_si{0};
};
源文件:
#include "TyTest.h"
TyTest::TyTest()
{
}
TyTest::~TyTest()
{
}
二、使用inline说明符
头文件:
#pragma once
class TyTest
{
public:
TyTest();
~TyTest();
inline static int m_si{0};
};
源文件:
#include "TyTest.h"
TyTest::TyTest()
{
}
TyTest::~TyTest()
{
}
上面的代码可以成功编译和运行。可见c++也是不断进步的,真是越来越人性化了,这也是我多年来一直钟爱它的原因之一。
本文介绍了C++中静态成员变量的定义方式,包括非常量静态成员变量和常量静态成员变量的区别,以及如何使用inline说明符来简化声明与定义的过程。
1134

被折叠的 条评论
为什么被折叠?



