zoukankan      html  css  js  c++  java
  • static, const

    static 静态的,类的静态成员函数,静态成员变量是和类相关的,但不和具体对象相关。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数就是一个全局函数,只是作用域在包含它的文件中。static 静态成员变量不能在类的内部初始化。在类的内部只声明,定义必须在类的外部。如 int Student:: rate=0.5;

    static 定义的静态常量在函数执行后不会释放存储空间。

    const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,必须有构造函数。

    const 只在对象生存期内是常量。不同对象的const数据成员的值是不同的。所以不能在类的声明中初始化const数据成员。

    cosnt成员函数主要目的是防止成员函数修改对象的内容。即const成员函数不能修改成员变量的值,但可以访问成员变量。

    static成员函数主要目的是作为类作用域的全局函数。不能访问类的非静态数据成员。类的静态成员函数没有this指针,这导致:不能直接存取类的非静态成员变量,调用非静态成员函数2、不能被声明为virtual

    class Test{  
    public:  
        Test():a(0){}  
        enum {size1=100,size2=200};  
    private:  
        const int a;//只能在构造函数初始化列表中初始化  
        static int b;//在类的实现文件中定义并初始化  
        conststatic int c;//与 static const int c;相同。  
    };  
       
    int Test::b=0;//static成员变量不能在构造函数初始化列表中初始化,因为它不属于某个对象。  
    cosnt intTest::c=0;//注意:给静态成员变量赋值时,不需要加static修饰符,但要加cosnt。 

    http://blog.csdn.net/tobefxz/article/details/14109697

    在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

    静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:

        <数据类型><类名>::<静态数据成员名>=<值>

  • 相关阅读:
    实现类似add(1)(2)(3)的函数
    Chrome安装助手踩坑
    升级webpack4错误处理
    vue项目埋点
    如何理解vue中的v-bind?
    不能不知道的webpack基本配置
    IE9及以下浏览器升级提示
    HTML5常用API
    css中clip属性
    Web开发展望
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7117874.html
Copyright © 2011-2022 走看看