C++静态成员与静态函数成员的理解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/nick_chain/article/details/87260602

静态成员

我们为什么要使用C++静态成员?静态成员能为我们达到什么样的目的?

很多时候我们使用静态成员的目的,在于想让该类的所有对象共同维护一个或者某几个属性成员。即一个类的多个对象共同使用和维护某个(些)属性。

#include "pch.h"
#include <iostream>
class test {
public:
	void count_a();
	int get_a() { return a; }
private:
	static int a;
};

int test::a = 0;
void test::count_a() {
	test::a++;
}

int main()
{
	test a, b, c;
	a.count_a();
	b.count_a();
	c.count_a();

	std::cout <<"a的值:"<<c.get_a() << std::endl;

    //std::cout << "Hello World!\n"; 
}

如上代码所示,test类有多个对象a,b,c,他们共同维护一个属性a,a只有一个副本,a不属于任何一个对象,访问用“类名::标识符”访问

需要说明的是静态成员具有静态生存周期,静态成员的生存期与程序的运行期相同。静态数据成员之所以在类定义外加以定义,是需要这种方式为静态数据成员分配空间。

静态成员函数

那为什么又要使用静态成员函数?来看下面这个代码

#include "pch.h"
#include <iostream>
class test {
public:
	static void count_a(); //变成了静态成员函数
	int get_a() { return a; }
private:
	static int a;
};

int test::a = 0;
void test::count_a() {
	a++; //不用test::a++的访问方法
}

int main()
{
	test a, b, c;
	a.count_a();
	b.count_a();
	c.count_a();

	std::cout <<"a的值:"<<c.get_a() << std::endl;

    //std::cout << "Hello World!\n"; 
}

结果一样。

很多时候,我们用静态函数成员就是为了访问静态数据成员方便,不用“类名::标识符”这种方式访问。

说明:静态成函数员只能访问静态数据成员和静态函数成员。

猜你喜欢

转载自blog.csdn.net/nick_chain/article/details/87260602
今日推荐