写写程序,一种成就的感觉

写写程序,一种成就的感觉

导航

静态的函数可以直接用   ClassName::FunName   引用而不需要构造,私有的则必须构造后才能由类的内部函数引用,同时,静态的应该也是公共的。  
   
  其他的,等楼下的开讲……

同理,静态的成员变量也是公共的,不需要构建对象便已存在了.

静态变量就象自己的亲友,什么时候看都是一个人.函数可以一直保存原来的值.  
  私有变量象是汽车的旅客,下一次进去就换人了.每次进入函数都是初始化的值.

static变量属于类,即该类的所有对象都公用一个内存区。  
  比如你设计一个存款类,每个帐户为一个类对象,对每个帐户都有帐号,所以用普通变量。但对于存款利率,所有人都是一样的,只须共用一个,就用static类型。这样当你要改变利率的时候只要改一次,如果定义为非static类型你得对每个帐户都这样。  
   
  private类型用来做信息隐藏,把类外不须用的变量都定义为private类型可以防止误操作。

上面忘记加一句,static属于类,非static属于对象

楼上看C++   Primer很认真啊.

先谢谢大哥们的热情,但是小弟还是认为,从作用上讲,他们还是没有什么本质的区别。能不能举个例子,让我明白一下,各自的优缺点呢?

静态的不用new就能用类名加方法名访问  
  私有的必须new才能访问,并且只能是该类的成员函数访问,子类和该类的实例都不能访问。

如果   B   类继承于   A   类,那么   A   的   static   函数及成员在   B   中继续有效,但   A   类的   private   函数和成员就不能在   B   中引用。  
   
  建议楼主自己写代码试验一下,看书和实践都是需要互补的。

天啊还没有区别???  
  private的成员在对象构建之前是不存在的,也就是说只能象下面这样:  
  TYourObj   obj;  
  obj.SetPrivMember(1);  
  或者  
  TYourObj   *obj=new   TYourObj;  
  TYourOjb->SetPrivMember(1);  
  在对象定义之前是不能操作其私有变量的,每个对象都有一份该变量的内存实现,  
   
  对于static成员而言,所有的对象共用一块内存实现,而且该内存在没有构建这个类的对象实例时已经存在了,就象全局变量一样.  
  如:  
  TYourObj::StaticMember=1;  
  与全局变量不同的是,static成员也可以是private的,这样就实现了信息隐藏.  
   
  static成员函数与普通成员函数也不一样,它没有隐含的this参数,所以只能访问static成员变量.