C++——静态成员函数与静态成员变量
静态成员函数与静态成员变量使用static进行定义。
静态成员函数和静态成员变量其实就是全局函数与全局变量。
静态成员对象被所有对象所共享,就是每一个对象都可以通过类方法去修改静态成员变量的值。
sizeof不会计算静态成员变量的大小,计算的是对象中成员变量的大小。
静态成员不需要对象就可以访问。
ju_xing_mian_ji::Print_geshu_mianji();//类名::函数名()
普通的成员函数必须具体作用于某个对象,静态成员函数不具体作用于某个对象。
静态成员函数只能调用静态成员变量,原因是,如果调用了非静态成员函数或者变量时,非静态成员函数和非静态成员变量的归属问题就会出错,其到底是属于对象还是属于静态成员函数(全局函数)。
版本a:
class ju_xing_mian_ji
{
public:
ju_xing_mian_ji(double x_, double y_);
~ju_xing_mian_ji();
static void Print_geshu_mianji();
private:
int x, y;
static int nmain_ji ;
static int nge_shu ;
};
void ju_xing_mian_ji::Print_geshu_mianji()
{
cout << "矩形的个数:" << nge_shu << " " << "矩形的总面积:" << nmain_ji << endl;
}
ju_xing_mian_ji::ju_xing_mian_ji(double x_, double y_)
{
x = x_;
y = y_;
nmain_ji += x * y;
nge_shu++;
}
ju_xing_mian_ji::~ju_xing_mian_ji()
{
nmain_ji -= x * y;
nge_shu--;
}
int ju_xing_mian_ji::nmain_ji = 0;//在C++中静态成员变量需要在所有内容外进行声明
int ju_xing_mian_ji::nge_shu = 0;//在C++中静态成员变量需要在所有内容外进行声明
int main()
{
ju_xing_mian_ji a(1, 2);
j