zoukankan      html  css  js  c++  java
  • 《C++ Primer》 ---- 关于变量 与 基本类型

         类型是所有程序的基础;

       C++ 定义了几种基本类型: 字符型(char 和 wchar_t),整型(short int long bool),浮点型(float doubel) 并且提供自定义数据类型的机制  class  struct ;;

            标准库正是采用了这些机制 才定义了许多更为复杂的数据类型如: 可变长字符串 string  vector 等;

            对象 就是内存中具有类型的区域;具体点说:计算左值表达式就会产生对象 ;

    --------  关于初始化

             初始化 分为   复制初始化  与  直接初始化

                       复制初始化语法使用等于(=) ,直接初始化则是把初始化式放在括号中;;

                       int value(1024) ; // 直接初始化

                       int value = 1024 ; // 复制初始化

      C++ 中 “初始化 不是 赋值”  初始化是指创建变量 并且 给它 赋初始值, 而赋值是指擦除对象的当前值并用新的值代替;// 故 复制初始化实际上是两步动作,直接初始化语法更加灵活效率更高;

     对于内置类型来说,赋值初始化 与 直接初始化、并没有太大的差别

     但对于 类类型的对象来说,有些初始化仅能用直接初始化来完成; 定义如何进行初始化的成员函数称为 构造函数, 一个类可以定义多个构造函数,每一个构造函数必须接受不同数目或者不同类型的参数;

    -------  变量初始化的规则:

        1.内置类型变量的初始化 

             内置类型变量是否自动初始化取决与变量定义的位置;   

                   在函数体外 定义的变量都 初始化为 0 

                  在函数体内 定义的变量  不进行自动初始化;

       2.类类型变量的初始化

              使用显式的初始化式

              使用默认的构造函数    

               不管变量在哪定义,默认函数都会被使用;有些类类型没有默认构造函数,对于这些 类型来说,每个定义都必须提供显式的初始化式; 没有初始值是根本不可能定义这种类型的变量的; 

           

    ------ ---- 声明 与 定义

            变量的定义用于为变量分配存储空间, 还可以为变量指定初始值,但是变量有且仅有一个定义;(定义一般伴随着  初始化式)

            声明  用于向程序表明变量的类型 和 名字。定义也是一种声明   (使用extern 但是并没有 初始化式)  

                     extern int pi = 3.1415 ;    //  定义 

                     extern int pi ;                   // 声明 但并没有定义;

    ---------- const 限定符 ; 

                    const 限定符 提供将一个变量转化为常量的办法;         // 用const 修饰 即表明 不可被修改;

        默认情况:

                     在全局作用域里定义非const变量时,它在整个程序中都可以被访问;

                     全局作用域中声明的const变量 是定义该对象文件的局部变量,此变量只存在这个文件中,不能被其他文件访问  

                     // 默认情况下   类似与 c语言 static 的作用域;

           *非const 变量 默认是extern , 想要在其他文件中访问cosnt 常量  必须 显式的指定为 extern ;

       

    ------------  引用 ; 

             引用就是对象另一个名字;引用主要是 用作函数的形式参数  在前面添加  &符号来定义;

         *** 引用 必须用与该引用同类型的对象初始化;      int val = 1025 ;      int &var = val ;     // OK 

            引用仅仅是名字的不同,但是指向同一个地址,同一个对象;   同数据类型的对象相互关联;

     ----------- typedef 

                 用来定义类型的同义词; typedef  int  qint32 ;  // 使用qint32 来代表int数据类型;

       

    ----------- 枚举; enum

              为某些属性定义一组可选择的值;   

                  默认:第一个枚举成员 赋值为0,  后面的每一个枚举都比前面的大1;

                 enum stat { input , output , append   } ;   // 默认  input = 0 ; output = 1 ; append = 2  ;

                 //  enum stat { input =2 , output , append } ;  // 其他成员将 隐式初始化 ; 

     -------- struct  与 calss 

          class  第一个访问标识 前面 所有的成员 都是 private:

          struct   第一个标识前面  都有的成员都是 public ;  // 这是 class  与  struc 唯一差别;

                                      

            

       

                

        

  • 相关阅读:
    uboot的Makefile分析
    S3C2440上触摸屏驱动实例开发讲解(转)
    linux嵌入式驱动软件开发(csdnblog)
    [连接]研究MSN的一些参考资料(MSNP15)
    关于Asp.net中使用以下代码导出Excel表格的问题
    FCKEditor在Asp.net的安装
    奥运后,接手两个项目,PECT培训,CIW培训,系分考试...........一堆流水帐
    [转]甩掉数据字典,让Sql Server数据库也来一个自描述
    SQL Server 调优将会用到的非常好的DMV
    SQL Server 监视数据文件大小变化
  • 原文地址:https://www.cnblogs.com/vagabond/p/4655726.html
Copyright © 2011-2022 走看看