类私有变量和成员函数内的静态变量可以实现同样的目的,应该用哪个比较好
行为完全不同的.
【类私有变量和成员函数内的静态变量可以实现同样的目的,应该用哪个比较好】 成员变量每个对象一份,静态变量整个程序一份,确定你要哪个?
除非你这个类只有一个对象.
那么,本人觉得,成员变量看着舒服.
■网友
如果调用这个函数的行为是全局的,变量就应该是static,但是,通常来说这个方法本身也应该是static。
第一种方法比较好,如果方法是const而变量只是为了缓存,记得加mutable。
■网友
函数内静态变量是global的(类静态成员同理),最大限度避免使用
■网友
二者语义不同,无法比较
■网友
我觉得看你具体的应用场景了。私有变量的话可以额外提供类成员函数间的通讯,static就不行了,所以用私有变量可扩展性更强一点。使用static的好处就是封装性更强一点。
■网友
谢邀,我是写 Java 的,不熟悉C++,抱歉
参考了其它的回答,搞明白了代码的意思
方法一:在类中声明 list 变量,所有类方法都可以访问之方法二:在方法中声明 list 变量,但是利用 static 关键字将其生命周期延长到与类一致,但只有该方法能够访问之性能和安全之类的我不懂,但是在工程上,应该尽量明确变量的意义,从命名到类型到声明位置。
这个变量的作用范围在类中,那么就应该与相同作用范围的变量声明在一个地方。如果使用方法二,当问题变得复杂起来,追查 list 的声明发现它是一个方法内的局部变量,但其行为却与类变量相似,这会增加阅读代码的难度,生活本就不易,不要自己增加难度。
不过对于 doSomethingWithList(List) 这个方法,建议将 list 变量以参数的形式传入,使这个方法不依赖于 list 的声明。这样当想法改变,一定程度上,这个方法的实现不需要对应改变。
题外话,如果某项数据的生命周期和数据所在类一致,那么它就应该是类变量,如果与类的对象一致,那么就应该是对象属性。如果发现这个数据放在类或者对象中与其它同类数据格格不入,那么对这个数据的处理,可能就需要提取到新的类里面了。
■网友
即使你的 MyClass是单件,也推荐前一个。容器类型做静态局部变量太危险,新手bug之源。
■网友
当然是类成员变量好啊。静态局部变量有线程竞争隐患(不要说C++11通过制定标准解决了,各编译器的实现程度不一样),而且扩展性不好。
推荐阅读
- 怎样评价聚美优品私有化
- 汽车驾驶|长安汽车UNI星球升级 新成员UNI- K报道
- 汽车知识|吉利又迎新成员,全系搭2.0T引擎,配12.3英寸双联屏,11.37万
- |江苏省发改委副主任、党组成员祁彪接受审查调查
- 江苏省|江苏发改委副主任、党组成员祁彪接受纪律审查和监察调查
- 趣头条|家庭新成员,宋PLUS希望以后越来越幸福!
- 汽车知识|报告!AMG 35新秀成员集结完毕
- 游戏《坦克世界》中的霞飞成员应该培养啥技能
- JS中,a是变量,' \" '+a+' \" ' ,为啥可以让程序读取a的值
- 拼多多 月GMV 400亿 这个数据可靠吗 如果可靠,那淘宝危险吗阿里会怎样对待这个电商新成员
