zoukankan      html  css  js  c++  java
  • VC中静态变量Static

    vc中没有强制的数据类型间转换,java和C都有的:

    例如:vc中:

                     int a=0xfffe;    //即65534
                     char b=a;        编译不出错

                     str.Format("%d",b);
          MessageBox(str);   //结果为-2

    java中:

           int a=0xfffe;    //即65534
                      byte b=a;      编译出错,需要改成byte b=(byte)a


      静态变量(static).静态变量之所以是因为静态,是因为他在整个程序生命周期的地址静止不变。也就是说在整个程序里面只保存有一份拷贝。static关键字允许它在不同的函数调用间保持它的值。如果一个静态变量被访问后值改变,它就会保持新的值。如果这变量再次被访问,它将会维持最新的值
    class Test1{
    public:
           static  int a;
           const int b;
           Test1():b(10){  
    
           }
    
    void print1(){
                   a++;
                   printf("%d,%d\n",a,b);
           }
    };
    
    int Test1::a=10;
    
    void main(){
    
           Test1 t1;
           t1.print1();
    
           Test1 t2;
           t2.print1();
    
           Test1 t3;
           t3.print1();
    }

    结果:11    12     13

    在c++中,static静态成员变量不能在类内部初始化。int Test1::a=10;
    在c++中,const常量成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。在构造函数中初始化都不行

     

    C++中常见的关键字含义:

    1. inline:定义内联函数,该关键字是基于定义,如果只在函数声明时给出inline,则函数不会被认为是内联函数,所以必须在函数定义的地方也加上inline,同时inline只是向编译器建议函数以内联函数处理,不是强制的。

    2. const:定义常成员,包括const数据成员和const成员函数,const数据成员必须,也只能通过构造函数的初始化列表进行初始化,const成员函数只能访问类的成员,不能进行修改,如果需要修改,则引入下面的mutable关键字。

    3.mutable:这个关键字的引入是解决const成员函数要修改成员变量,通常而言,const成员函数只能访问成员变量,不能修改,但是如果成员变量被mutable修饰了,则在const成员函数中可以修改该变量。mutable和const不能同时用于修饰成员变量。

    4. static:声明静态成员,包括静态数据成员和静态成员函数,它们被类的所有对象共享,静态数据成员在使用前必须初始化,而静态成员函数只能访问静态数据成员,不能访问非静态数据成员,因为该函数不含有this指针。

    5. virtual:声明虚函数,用于实现多态,该关键字是基于声明的。

    6. friend:声明友元函数和友元类,该关键字也是基于声明的。

    7. volatile:被该关键字修饰的变量是指其值可能在编译器认识的范围外被修改,因此编译器不要对该变量进行的操作进行优化。可以与const同时修饰一个变量。

    为什么需要const成员函数?

      我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员(普通成员),,对常对象和常量进行访问。也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。

  • 相关阅读:
    【2】Java包装类
    【1】Java异常
    【10】Java多态:内部类
    【9】Java多态:接口
    【8】Java多态:抽象类(abstract关键字)
    【7】Java多态:向上转型、向下转型、instanceof运算符
    【6】Java单例模式
    元素定位工具:Chrome浏览器ChroPath插件
    linux添加环境变量
    php导出数据到多个csv并打包压缩
  • 原文地址:https://www.cnblogs.com/renyuan/p/2582732.html
Copyright © 2011-2022 走看看