MFC成员变量 静态变量

来源:百度知道 编辑:UC知道 时间:2024/07/07 23:54:33
在MFC中,当我们需要定义一个变量,使其在整个程序运行期间都可以使用,我看孙鑫的视屏里面全部用得是把该变量申明为类的成员函数,但我认为这样会把类的数据区搞的很复杂,故我一般都是在要使用变量的函数中将该变量声明为静态变量,请问这样与孙鑫的视屏中的做法有哪些区别,哪一种处理方法更好一点呢? 不胜感激!!!
呵呵 不好意思 是申明为成员变量 前面几位可能是没有看懂我的意思
例如:我要用一个bool变量保存鼠标左键是否点击,视屏里面一般把该变量设计成一个View类的成员变量,而我一般是采用在WM_CHAR的命令响应函数里面把该变量设计成静态变量
两者的功能都能够实现,我就想知道一下原理和那种方案更好?

你说的这个问题,我觉得比较难回答。这个是仁者见仁,智者见智的问题。就这个问题而言,哪一方说好都不奇怪。你觉得哪种好,就用哪种。

特别强调的是,要有一颗包容的心,就是说我觉得这种方法好的时候,千万别把另一种方法给抛弃了,能记的尽力记在脑中,顶多是不用罢了。或许哪天,在一个程序解决方案里,你忽然会发现一直在用的这种方法在这里并不好。那是不是可以试下已经被打入冷宫的另一种方法呢,或许会对它有新的认识,进而会产生对这两种方法新的认识。
就我看,程序方法也是很有哲学性的,不存在哪种实现方法或哪个函数特别好,相似的函数永远比不上的这种情况。更多的时候,是各有各的妙用。
另外,就你说的这个问题,我会更倾向于使用成员变量。
最后再强调一下,要有一颗包容的心,事事无绝对。你觉得好的方法就去用,但要经常审视自己一直在用的东西,问一下,是不是可以换一下呢?

孙鑫的教程里,并不全部是成员变量,也有不少声明为静态变量,可能你并没有看完。
二者的区别如下:
非static成员变量在每个类的实例中均有一份拷贝,而static成员变量是所有的该类共享的!
比如类定义如下:
class myclass
{
public:
int nVal;
static int nVal1;
myclass(int n);
}
//////////////////////
//.cpp
int myclass::nVal2 = 0;
myclass::myclass(int n)
{
nVal = n;
}
//////////////////////
//测试程序
myclass ob1(1),ob2(2);
myclass::nVal1 = 3;
//ob1.nVal 为1,ob2.nVal 为2,二者的nVal1均为3.

静态成员变量不属于某实体而是属于某个类的,并且外部不方便直接访问,也是和面向对象的思想背道而驰的

静态变量:类中的变量加入static修饰符,