C++静态成员函数与静态成员变量
静态成员函数的作用
- 调用这个函数不会访问或者修改任何对象非static数据成员
- 不需要生成对象就能调用
原因
类的静态成员变量/方法属于类本身在类加载的时候就会分配内存可以通过类名直接去访问。
非静态成员变量/方法属于类的对象只有在类的对应产生类的实例化被创建时才会分配内存然后通过类的实例化对象去访问。
静态成员变量
- 静态成员变量先于对象存在因此静态成员变量要再类外初始化
- 静态成员变量归整个类所有
- 可以通过类名直接访问共有静态成员变量
- 类的所有对象共享类的静态成员变量
静态成员函数
- 类的静态成员函数只能访问静态成员变量、静态成员函数因为它不接受this指针智能访问类的static成员
- 可以通过类名访问类的共有静态成员函数
- 可以通过对象名访问类的共有静态成员函数
- 静态成员函数不能被virtual修饰因为静态成员只属于类不属于任何类的实例化因此没有任何实际意义。
class mybook
{
public:
static int width;
static int page_num;
static void print()
{
cout<<"书本的页数为:"<<page_num<<endl;
}
};
int mybook::page_num = 10;
int mybook::width = 100;
int main() {
mybook book1;
book1.print();
mybook::page_num = 15;
book1.print();
mybook book12;
book12.print();
return 0;
}