静态成员变量和静态成员函数

//静态成员变量和静态成员函数
/*我们知道用类可以定义很多变量,每个变量都有各自特定的属性,
 有没有一个变量的属性是属于所有对象的呢? */ 
#include<iostream>
using namespace std;
class BB 
{
    private:
        int a;
           int b;
           static int c;   
        public:
            void printt()
            {
                cout<<"c="<<c<<endl;
            }
            void addc()
            {
                c=c+1;
            }
            protected:
};
int BB ::c=10; //C这个变量是BB这个对象中所有对象都有的一个变量,C=0这个特性适用于BB这个对象所定义的所有的类 
int main()
{
    BB b1,b2,b3;
    b1.printt() ;//10
    b2.addc() ;//11
    b3.printt() ;//11 输出结果应该为10,11,所以C这个变量属性是整个类都共享的 。 
    cout<<"hello"<<endl;
    return 0;
 } 
 /*静态成员函数
 概念:静态成员函数冠已关键字static
       静态成员函数提供不依赖于类数据结构 共同操作,它没有this指针。
       在类外调用静态成员函数名用“类名::”做限定词或通过对象调用*/ 
 
 class BB 
{
    private:
        int a;
           int b;
           static int c;   //静态成员变量 
        public:
            void printt()
            {
                cout<<"c="<<c<<endl;
            }
            void addc()
            {
                c=c+1;
            }
            static void getc()//静态成员函数 
            {
                cout<<"c"<<c<<endl;
                //请问在静态成员函数中,能调用普通成员属性或者是普通函数吗 
                cout<<"a"<<a<<endl;//编译会报错,对非静态成员BB::a这个成员非法引用。 
                                   //因为编译器不知道a这个成员是属于哪一个具体的对象的,
                                  // 它分不清楚是属于哪一个对象的 ,但是可以调用C这个成员,
                                  //因为C这个成员是个静态 成员变量,是属于整个类的 
            }
            protected:
}; 
int BB ::c=10; 
int main()
{
    BB b1,b2,b3;
    b1.printt() ;
    b2.addc() ;
    b3.printt() ; 
    //静态成员函数的调用方法 
    b3.getc() ;//第一种方法,用对象.加函数名来调用静态成员函数 
    BB.getc() ;//第二种方法,用类名.加函数名来调用静态成员函数。 
    cout<<"hello"<<endl;
    return 0;
 }
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值