static在C和C++中的用法

摘自Linux多线程服务端编程--陈硕,之前没总结过,特地总结下

C语言的static关键字两种用途:

        1、用于函数内部修饰变量,即函数内部的静态变量。这种变量的生存期长于该函数,使得函数具有一定的状态。使用静态变量的函数是不可重入的,也不是线程安全的。

        2、用在文件级别(函数体之外),修饰变量或函数,表示该变量或函数只在本文件可见,其他文件看不到,也访问不到该变量或函数。

 

C++中包括上面两种用法的同时增加了在类中使用static的两种用法

        3、用于修饰类的数据成员,即静态成员变量。这种数据成员的生存期大于类的对象(实体)。该类的每个对象共享这个静态数据成员,一个对象改变了这个数据成员,其他对象也就改变了,而普通数据成员是每个对象独有的。也就是说静态成员属于整个类所有,不需要依赖任何对象,需要在类外单独分配空间。

        4、用于修饰类的成员函数,即静态成员函数。这种成员函数只能访问类的静态成员变量和其他静态成员函数,不能访问普通的成员变量或成员函数。

 

        补充:对于静态成员函数有以下主要特性:

        不能够直接存取类中的非静态成员,包括非静态数据成员和非静态成员函数

        不能够被声明为const、volatile、virtual

        不需要经由类对象才被调用

你可能感兴趣的:(C++,对象)