zoukankan      html  css  js  c++  java
  • 求教static和private各有什么优缺点、不同点和注意点???

    静态的函数可以直接用   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成员变量.

  • 相关阅读:
    php自动跳转中英文页面
    如何让一个层关闭之后,就算刷新页面了也不显示。除非关闭页面再次打开
    彻底杜绝warning: Cannot add header information headers already sent in......
    大三了
    X牛人關於編程語錄
    C++虚函数表解析
    epoll:Edge or Level Triggered
    LRU和LFU的区别
    会话、进程组与僵死进程
    Effective C++学习笔记:确定基类有虚析构函数
  • 原文地址:https://www.cnblogs.com/hateyoucode/p/1353682.html
Copyright © 2011-2022 走看看