C++ 类成员函数中的静态变量的作用域


本来的一个想法是C++ 的类的成员函数是属于这个类的,那么这个类的成员函数中的静态变量也是属于这个类的。不过越想越感觉不对劲,于是写了个测试代码,试了一下。还真不对,结果是类的成员函数中的静态变量,他的作用域是这个成员函数,不管是不是这个类的同一个实例化对象,他们都共用这一个静态变量。也就是说函数的静态变量还是跟C 一样的解释。


其实这样想法真的挺傻,用一个私有成员变量就可以处理为每一个实例化对象都有自己的操作变量了,而不需要声明和定义一个静态变量。


直接给出测试代码吧。

// test.h
#ifndef TEST_H
#define TEST_H

class clsTest
{
public:
	clsTest() {}
	~clsTest() {}

	void func() const;
};


#endif // TEST_H

<pre name="code" class="cpp">// test.cpp
#include "test.h"
#include <iostream>


void clsTest::func() const
{
	static int sTestNum = 0;

	std::cout << "sTestNum = " << ++sTestNum << std::endl;
}

// main.cpp
#include <iostream>
#include "test.h"


int main(int argc, char *argv[])
{
	clsTest test01;
	clsTest test02;

	std::cout << "test01 ########################" << std::endl;
	test01.func();
	test01.func();
	test01.func();
	test01.func();
	std::cout << "test01 ########################" << std::endl;
	std::cout << "test02 ########################" << std::endl;
	test02.func();
	std::cout << "test02 ########################" << std::endl;


	return 0;
}

// 运行结果
test01 ########################
sTestNum = 1
sTestNum = 2
sTestNum = 3
sTestNum = 4
test01 ########################
test02 ########################
sTestNum = 5
test02 ########################


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值