C++类中的static关键字

40 篇文章 0 订阅

静态数据成员

在类中数据成员的声明前加上static,该成员是类的静态数据成员.

例子

#include <iostream>  

using namespace std;  

class MyClass  
{  
public:  
    MyClass(int a, int b, int c);  
    void fun();  
private:  
    int a,b,c;  
    static int sum;//声明静态数据成员  
};  

 int MyClass::sum = 0;  
MyClass::MyClass(int a, int b, int c)  
{  
    this->a = a;  
    this->b = b;  
    this->c = c;  
    sum += a+b+c;  
}  

void MyClass::fun()  
{  
    cout<<"sum = "<<sum<<endl;  
}  
void main()  
{  
    MyClass M(1,2,3);  
    M.fun();  

    MyClass N(4,5,6);  
    N.fun();  
}  

特点:

对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当做是类的成员,无论这个类被定义了多少个,静态数据成员都只有一份拷贝,为该类型的所有对象所共享(包括其派生类)。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新.

因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以它不属于特定的类对象,在没有产生类对象前就可以使用.

静态成员函数

与普通的成员函数相比,静态成员函数由于不是与任何的对象相联系,因此它不具有this指针.从这个意义上来说,它无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,只能调用其他的静态成员函数

例子

#include <iostream>  

using namespace std;  

class MyClass  
{  
public:  
    MyClass(int a, int b, int c);  
    static void fun();  
private:  
    int a,b,c;  
    static int sum;//声明静态数据成员  
};  

 int MyClass::sum = 0;  
MyClass::MyClass(int a, int b, int c)  
{  
    this->a = a;  
    this->b = b;  
    this->c = c;  
    sum += a+b+c;  
}  

void MyClass::fun()  
{  
    cout<<"sum = "<<sum<<endl;  
}  
void main()  
{  
    MyClass M(1,2,3);  
    M.fun();  

    MyClass N(4,5,6);  
    N.fun();  
    MyClass::fun();//静态成员函数的访问  
}  

更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值