这个是容易让人混淆和遗忘的地方,越是基础的东西,越容易考和出错。
类的函数和数据成员都可以是静态的。
1)静态数据成员::C++的静态成员变量能够在构造函数里初始化么?
不能。因为静态成员属于类作用域,而不属于类对象。程序一运行就初始化了,不可能在构造对象的时候再初始化一次。用复制语句最好。
静态成员其实和全局变量地位一样的,只不过编译器将他的使用限制在类作用域内。(不是类对象,他不属于类对象成员)。要在累的定义外初始化(不是类作用域外)。
2)静态成员函数
静态成员函数有几种限制:
1 静态成员函数只能够引用这个类的其他静态成员(当然可以访问全局函数和数据)。
2 静态成员函数没有this 指针
3 同一个函数不能够同时有静态和非静态两种,静态成员函数不可以是虚函数
4 静态成员函数不能被声明为 const 和volatile.
3)静态成员函数的应用是有限的,最大好处是可以再实际创建任何对象之前,预初始化私有的静态数据。
class static_type{
static int i;
public:
static void init(int x){i=x;}
void show( ){cout<<i;}
};
int static_type::i;
int main( )
{
static_type::init(100);
static_type x;
cout<<x.show( );
}