一、static修饰的成员变量
class Test
{
public:
Test(int a,int b):**mb(a),ma(a)**
{}
void Show()
{
cout<<"ma:"<<ma<<endl;
cout<<"mb"<<mb<<endl;
}
private:
static int ma;
int mb;
};
int main()
{
Test test1(10,20);
test1.Show();
return 0;
}
static修饰的成员变量
1、不属于对象私有
2、对象共享
2)、如何进行初始化或者赋值
因为构造函数是初始化对象所占空间,static修饰的成员变量不属于对象私有,因此不能用构造函数进行初始化,因此,一定要在类外进行初始化
class Test
{
public:
Test(int a,int b):**mb(a),ma(a)**
{}
void Show()
{
cout<<"ma:"<<ma<<endl;
cout<<"mb"<<mb<<endl;
}
private:
static int ma;
int mb;
};
int Test:: ma = 10;
int main()
{
Test test1(10,20);
test1.Show();
return 0;
}
3)、如何访问静态成员变量
静态的成员对象不依赖对象调动,可有可无,例如
Test::ma;
或者 test1.ma;
二、static修饰的成员方法
class Test
{
public:
Test(int a,int b):**mb(a),ma(a)**
{}
static void Show()
{
cout<<"ma:"<<ma<<endl;
cout<<"mb"<<mb<<endl;
}
private:
static int ma;
int mb;
};
int Test:: ma = 10;
int main()
{
Test test1(10,20);
test1.Show();
return 0;
}
1、不依赖对象调动,所以没有this指针,遵循__cdecl调用约定
1)因此不能访问普通的成员变量
2)能访问静态成员变量<
3)静态成员方法不能调动普通成员方法
4)普通成员方法可以调动静态成员方法