先说结论,只是赋缺省值。
class Date
{
private:
// ******只是给了缺省值,并不是定义********
// 如果没有在构造函数内对成员变量进行初始化,那缺省值就会发挥作用
int _year = 2023;
int _month = 1;
int _day = 11;
};
在类中存放的只是成员变量的声明,成员变量的定义在初始化列表。
在声明时进行的赋值操作只是给了缺省值,让构造函数没有实现初始化操作的时候能给变量一个缺省值而不至于便为随机值。
而在定义时进行的操作便是初始化。
普通成员变量只有一个定义的地方那便是初始化列表!!!
例外:
静态成员变量。
class Date
{
public:
Date();
// 静态成员函数只能访问静态成员变量
static int GetCount()
{
return _sCount;
}
private:
// ******只是给了缺省值,并不是定义********(并没有缺省的效果?)
// 如果没有在构造函数内对成员变量进行初始化,那缺省值就会发挥作用
int _year = 2023;
int _month = 1;
int _day = 11;
// 静态成员变量->声明
static int _sCount;
};
// 静态成员变量->定义
int Date::_sCount = 0;
1、静态成员变量仍属类中的成员变量,只是它的生命周期是在整个程序中。所以它仍然受类中访问限定符的限制,且声明需要写在类中(并带static)。
2、静态成员变量如果是private或者protected之下,那么就需要用函数来进行间接访问。
3、静态成员变量为类及其所有实例化对象所有,所以需要定义在类外(不需要带static,但是需要说明他是那个类的变量,所以需要带上类名::),不能出现在某一个对象的初始化列表中。
4、访问方式:①类名::静态成员变量
②对象.静态成员变量