• C++(+类型加强 +加入面向对象)


    1.c++中所有变量可以在使用前定义。

    for(int i = 0 ; i<5 ; i++)
    {
       for(int j = 0 ; j<5 ; j++)
       {
           do_sth;
        }      
    }

    2. c++ 中可以获得 register 变量的地址。

        register 关键字是请求编译器将局部变量设置为寄存器变量。

     (如果有代码要取 register 变量的地址,编译器将变量的 register 属性变无效)

    3. c++ 中不可以定义两个同名的全局变量。

    4. c++ 中 struct 定义了一种全新的类型

    struct student 
    {
       char* name;
       int     age;    
    };

     5. c++中所有标识符必须显示的声明,不支持默认类型。

      int fun();  //error

    6. const 关键字

           1. 在c语言中 const 为变量

      const 高数编译器其修饰的变量在编译期只可做左值。编译期有空,运行期无用。

      const 修饰的全局变量在只读存储区分配空间,修饰的局部变量在栈上分配空间。

      只有枚举enum定义的标识符才是常量。

    int main(void)
    {
      const int a=0;
      int *p = (int *)&a;
      *p = 5;
    printf("%d",a);// c++ 0
               // c 5
     printf("%d",*P);// C++ 5 }

          2. 在c++中 const 为真正地常量

      编译器在编译const 修饰的变量时直接将其对应的符号表中放入常量值,在其后遇到该常量时将符号表的常量值取出并替换成常量值。

      例外: 在 & extern 操作符和关键字修饰时为常量分配存储空间,但不会使用储存空间的值(兼容C语言)。

      3. 在c++中const什么时候为只读变量?什么时候为常量?

        a. 使用字面量初始化的const常量是真正的常量,进入常量符号表。

        b. 使用变量初始化的const常量是只读变量,不进入常量符号表。

        c. 被volatile修饰的const常量是只读变量,不进入常量符号表。

        d. 在编译期间无法确定初始值的const常量是只读变量,不进入常量符号表。

        volatile const int y = 2;       // y为只读变量
        int* p = const_cast<int*>(&y);  // p为普通变量
        *p = 6;  
        printf("y = %d
    ", y);   // 6
        printf("p = %d
    ", *p);  // 6    
        const int z = y;         // z为只读变量
    
        const int x = 1;                 // x为真正的常量,将x放入常量符号表中。
        const int& rx = x;               // rx为只读变量,编译器为x创建了四字节空间,并让rx作为空间的别名。  
        int& nrx = const_cast<int&>(rx); // nrx为普通变量,去掉只读变量rx的只读属性,代表的内存空间时rx的内存空间。    
        nrx = 5;    
        printf("x = %d
    ", x);       // 1
        printf("rx = %d
    ", rx);     // 5
        printf("nrx = %d
    ", nrx);   // 5
        printf("&x = %p
    ", &x);     // addr1
        printf("&rx = %p
    ", &rx);   // addr1
        printf("&nrx = %p
    ", &nrx); // addr1
    

    7. 布尔类型

      bool 类型用一个字节存储,取值 ture / false (C++关键字)

      ture 编译器内部用1表示,表示真。

      false编译器内部用0表示,表示非真值。

      布尔类型支持数学运算,运算结果将被转换(将非0值转化为ture,将0值转化为false)

    bool a=0;
    printf("%d",a);   // 0
    a++;
    printf("%d",a);   // 1
    a-=3;
    printf("%d",a);   // 1

    8. 三目运算符

    int a = 1, b = 2;
    (a < b) ? a : b = 3;

    (a < b) ? a : 2 = 3; //error

       c: 三目运算符返回表达式中 a 变量的值

       c++:三目运算符返回表达式中 a 变量本身,只有a,b为变量才可以将整个表达式作为左值。

       当三目操作符可能返回中都是变量时,返回的是变量的引用。

       当三目操作符可能返回中有常量时,返回的是值。

    int a = 1,b = 2;
    (a < b)? a : b = 3;  // 返回a或b的引用
    (a < b)? 1 : b = 3;  // 返回1或b的值    error
  • 相关阅读:
    silverlight Prism4中文教程(第一章 第三部分)——bluesky234
    SilverLight学习笔记关于Silverlight资源文件(如:图片)的放置位置及其引用
    silverlight布局和式样中的常用三大控件 Canvas Grid StackPanel
    silverlight Prism4中文教程(第一章 第二部分)——bluesky234
    图文详解Silverlight用WCF访问MSSQL数据库(silverlight china)
    本人自写代码(Aspnetpager详细介绍)
    Asp.net 2.0 水晶报表部署问题解决
    VS2005中使用AspNetPager控件成功事例代码(分页超快的哟)
    AspNetPager不显示的N种可能性
    —(一)水晶报表(CrystalReports)的简单应用(配置及发布)
  • 原文地址:https://www.cnblogs.com/zsy12138/p/10677126.html
Copyright © 2020-2023  润新知