求教static和private各有什么优缺点、不同点和注意点???
小第,近来看了这两个概念,似乎他们的作用差不多,故来求教! 问题点数:100、回复次数:12Top
1 楼JetKingLau(时差)(亦远亦近)(静坐常思已过 闲谈勿论人非 …………)回复于 2004-08-01 17:42:23 得分 25
静态的函数可以直接用 ClassName::FunName 引用而不需要构造,私有的则必须构造后才能由类的内部函数引用,同时,静态的应该也是公共的。
其他的,等楼下的开讲……Top
2 楼binbin(破坏分子)回复于 2004-08-01 17:52:31 得分 0
同理,静态的成员变量也是公共的,不需要构建对象便已存在了.Top
3 楼TryToday(超口术生命体)回复于 2004-08-01 23:35:19 得分 15
静态变量就象自己的亲友,什么时候看都是一个人.函数可以一直保存原来的值.
私有变量象是汽车的旅客,下一次进去就换人了.每次进入函数都是初始化的值.Top
4 楼dhfly(飞鸿)回复于 2004-08-01 23:53:38 得分 15
static变量属于类,即该类的所有对象都公用一个内存区。
比如你设计一个存款类,每个帐户为一个类对象,对每个帐户都有帐号,所以用普通变量。但对于存款利率,所有人都是一样的,只须共用一个,就用static类型。这样当你要改变利率的时候只要改一次,如果定义为非static类型你得对每个帐户都这样。
private类型用来做信息隐藏,把类外不须用的变量都定义为private类型可以防止误操作。Top
5 楼dhfly(飞鸿)回复于 2004-08-01 23:55:55 得分 0
上面忘记加一句,static属于类,非static属于对象Top
6 楼binbin(破坏分子)回复于 2004-08-02 07:56:45 得分 30
楼上看C++ Primer很认真啊.Top
7 楼wupangzi(无本之木)回复于 2004-08-02 08:26:05 得分 0
先谢谢大哥们的热情,但是小弟还是认为,从作用上讲,他们还是没有什么本质的区别。能不能举个例子,让我明白一下,各自的优缺点呢?Top
8 楼constantine(飘遥的安吉儿)回复于 2004-08-02 08:38:36 得分 15
这样还没有区别?
你自己写个例子,然后用其他类调用看看,自己动手你的理解会更好的Top
9 楼tianli_(冤冤相报何时了,何必呢!?)回复于 2004-08-02 08:40:31 得分 0
静态的不用new就能用类名加方法名访问
私有的必须new才能访问,并且只能是该类的成员函数访问,子类和该类的实例都不能访问。Top
10 楼JetKingLau(时差)(亦远亦近)(静坐常思已过 闲谈勿论人非 …………)回复于 2004-08-02 09:53:50 得分 0
如果 B 类继承于 A 类,那么 A 的 static 函数及成员在 B 中继续有效,但 A 类的 private 函数和成员就不能在 B 中引用。
建议楼主自己写代码试验一下,看书和实践都是需要互补的。Top
11 楼binbin(破坏分子)回复于 2004-08-02 10:12:53 得分 0
天啊还没有区别???
private的成员在对象构建之前是不存在的,也就是说只能象下面这样:
TYourObj obj;
obj.SetPrivMember(1);
或者
TYourObj *obj=new TYourObj;
TYourOjb->SetPrivMember(1);
在对象定义之前是不能操作其私有变量的,每个对象都有一份该变量的内存实现,
对于static成员而言,所有的对象共用一块内存实现,而且该内存在没有构建这个类的对象实例时已经存在了,就象全局变量一样.
如:
TYourObj::StaticMember=1;
与全局变量不同的是,static成员也可以是private的,这样就实现了信息隐藏.
static成员函数与普通成员函数也不一样,它没有隐含的this参数,所以只能访问static成员变量.Top
12 楼wupangzi(无本之木)回复于 2004-08-07 15:59:08 得分 0
谢谢各位大哥的指教!Top




