C++入门:static成员
用static修饰的成员函数,称之为静态成员函数。
静态的成员变量一定要在类外进行初始化。
【静态的成员变量不能在声明、初始化列表中进行初始化。】
class Date
{
public:
// 静态成员函数
static int getdcount()
{
return _dcount;
}
private:
int _year;
int _month;
int _day;
static int _dcount;
};
// 静态的成员变量一定要在类外进行初始化。
int Date::_dcount = 0;
// 静态成员变量初始化完成
int main()
{
Date d;
// 静态成员变量/函数访问方法:
// 1.对象访问
cout << d.getdcount() << endl;
// 2.类名 + 作用域限定符
cout << Date::getdcount() << endl;
return 0;
}
特性1-5
- 静态成员为所有类对象所共享,不属于某个具体的实例
- 静态成员变量必须在类外定义,定义时不添加static关键字
- 类静态成员即可用类名::静态成员或者对象.静态成员来访问
- 静态成员函数没有隐藏的this指针,不能访问任何非静态成员
- 静态成员和类的普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值
【问题】
- 静态成员函数可以调用非静态成员函数吗?
不可以。 - 非静态成员函数可以调用类的静态成员函数
可以。
原因:因为非静态成员需要this指针,静态成员函数内部没有this指针。