静态成员变量和静态成员函数(C++)

Posted 每天告诉自己要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态成员变量和静态成员函数(C++)相关的知识,希望对你有一定的参考价值。

静态成员变量通常要在类内声明,类外初始化,编译阶段就会分配内存,所有的对象共享一块内存
而且通常用类名去访问,因为他不属于任何一个对象,虽然也可以通过对象去访问静态成员变量,但是其实实质上也是访问的同一个东西。
重点注意:静态成员变量是共享一块内存的,也就是说后面给这个变量赋值会覆盖先前的值,同一块地址只能有一个值。

clas Person {
public:
	static int m_age;//类内声明
private:
	static int m_high;//私有权限也是一样的,加上作用域之后类外直接初始化就ok	
};
int Person::m_age = 10;//类外初始化,私有和公有是一样的。
int Person::m_high = 180;//但是私有的不可以在类外访问!!!
int a = Person::m_age; //类外访问公有属性的静态成员变量,正确的
int b = Person::m_high;//错误!!!不可访问

静态成员函数是在类内声明+实现,同样的是共享一份内存。
注意:静态成员函数不能访问普通的成员变量,只能访问静态成员变量

class Person() {
public:
	int age;
	static int m_age;
	static void func() {
		cout << age << endl; //报错,无法访问
		cout <<m_age<<endl; //正确
	}

原因:静态成员函数是共享内存空间的,也就是说不同的对象是用的同样的内存,同样的数据。如果此时静态成员函数里面包含了普通的成员变量,那么当有多个对象的时候,想要通过静态成员函数去操作这个变量的时候就不知道到底操作哪个变量了。

以上是关于静态成员变量和静态成员函数(C++)的主要内容,如果未能解决你的问题,请参考以下文章

C++面向对象:静态成员和静态成员函数

C++类中的静态成员函数以及静态成员变量

C++类中的静态成员函数以及静态成员变量

C++类中的静态成员变量与静态成员函数的使用

静态成员变量和静态成员函数(C++)

C++ 静态成员变量成员函数