从零开始的C++(静态成员)

静态成员

  • 类成员一旦被 static 修饰就会变成静态成员,他不会存储在每一个对象当中,而是单独一份存储在bss或data内存段中,所有的类对象共享(静态成员属于类,而不属于某个对象)

  • 静态成员需要在类内声明,但要在类外定义和初始化,与成员函数一样需要加"类名::"限定符表示它属于那个类,但不需要再加额外的 static。

  • 成员函数前也可以被 static 修饰,这种函数叫静态成员函数,静态成员函数没有 this 指针,因此在静态函数中不能直接访问类的成员及成员函数,但可以直接访问静态成员变量,和静态成员函数。

  • 静态成员变量、函数依然受访问控制限定符的影响

  • 因为在代码编译完成后静态成员已经定义完成(有了自己的存储空间),因此可以不通过类对象而直接调用,"类名::静态成员名"直接调用。

  • 普通成员函数可以直接访问静态成员变量、静态成员函数。

  • 静态成员变量可以当作全局变量来使用(访问限定符必须是public),而静态成员函数可以当作是一个类的接口,实现对类的管理

#include <iostream>
#include <string.h>

using namespace std;

class User
{
	char pass[20];
public:
	static char name[20]; // 只是声明
	User(const char* name,const char* pass)
	{
		strcpy(this->name,name);
		strcpy(this->pass,pass);
	}
	static void show(void)
	{
		//cout << name << " " << pass << endl;
	}
	static void func(User user)
	{
		show();
		cout << name  << " " << user.pass << endl;
	}
};
char User::name[20];

int main()
{
	User user("zhizhen","zzxx");
	strcpy(User::name,"00000");
	/*user.show();
	User user1("hehe","xxxxx");
	user.show();*/
	User::func(user);
}

猜你喜欢

转载自blog.csdn.net/weixin_45050225/article/details/99683899