day03 - 17 静态成员变量 和静态成员函数

class AA{

   public:

   AA(int a, int b) {
       m_a = a;
       m_b = b;

  }
  

private:
   int m_a;
   int m_b;
   static m_c;

}

//表示此函数只在本文件内有效
static test(){

}

int main(void)
{
   AA a1(10,20);
   AA a2(100,200);
    
  

}

声明的时候,Class AA不开辟内存空间

静态成员变量m_c 存储在静态数据区

静态变量初始化的时候,一定类的外面

class {

........

}

int AA::m_c = 0;   //不管私有公有都必须在类外面初始化,m_c对整个类共享

可以通过类名访问静态成员 


AA::m_c = 200; //或者a1.m_c = 200 一样

如果m_c为私有成员,要想访问一个它只能提供一个静态成员方法,静态成员方法也是属于类的

static int getMc()
{
       return m_c;
}
private:
    static int m_c;  //静态成员也受访问修饰符影响

例子1:

class Box
{
	
public:
	Box(int l,int w)
	{
		m_len = l;   //堆上分配内存空间
		m_width = w;
	} 
	
	int volume()
	{
		int v = m_len *m_width* height;
		cout<<"高度是"<<m_width<<endl;
		cout<<"体积是" <<v<<endl;
		return v;
	}
	
	static void changeHeight(int h){
		height = h;
	}
	
private:
	int m_len;
	int m_width;
	static int height;
};

int Box::height = 100;   //静态成员初始化,类外

int main(void) {
	Box b1(10,20);
	Box b2(100,200);
	
	b1.volume();
	b2.volume();
	
	Box::changeHeight(300);  //静态成员对所有类成员共享的
	b1.volume();
	b2.volume();
	
	return 0;
	
	
}

运行结果:

静态成员总结:

1.static成员变量实现了同类间信息共享

2.static 成员类外存储,求类大小,并不包含在内

3.static 成员是命名空间属于类的全局变量,存储在data区。

4.static 成员只能类外初始化。

5.可以通过类名访问(无对象生成时亦可),也可以通过对象访问。

发布了27 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/jfztaq/article/details/82082998
今日推荐