//静态成员变量和静态成员函数
/*我们知道用类可以定义很多变量,每个变量都有各自特定的属性,
有没有一个变量的属性是属于所有对象的呢? */
#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;
}
静态成员变量和静态成员函数
最新推荐文章于 2023-06-02 11:04:41 发布