在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。
static成员的所有者是类本身和对象,但是多个对象拥有一样的静态成员。从而在定义对象时不能通过构造函数对其进行初始化; 静态成员不能在类定义里边初始化,只能在class body外初始化; 静态变量依旧符合public、private、protect特性; 静态成员函数没有this指针,它不能返回非静态成员,因为除了对象会调用它外,类本身也可以调用 。
一 静态变量
1、静态变量必须在外部定义和赋值
a、不能在 main() 函数中定义
b、不能在类的构造函数中定义
2、必须要定义静态变量,否则该变量没有内存空间(类中只是申明)
3、类本身可以直接调用静态变量
4、静态变量依旧符合public、private、protect特性
二 静态方法
1、静态方法可以被类直接调用,但是同静态变量一样符合public、private、protect特性
2、静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针。
3、静态成员函数不可以同时声明为 virtual或后缀const 函数。因为virtual就是用来区分是哪个对象调用了他,与静态方法矛盾。而后缀const是用来修饰this指针的,静态变量中不包含this指针。
a、不可以同时声明为 virtual
b、不可以同时声明为后缀const
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/nwd0729/article/details/47067549