C++ 语法干货 1-变量、函数、类、结构

1.变量

    1.1程序占用的内存分布共有5部分

         1、栈      : 分配,编译器    
         2、堆       :分配,程序员;  new delete ,malloc(sizeof )  free() 
         3、全局区+static :初始化 在一块区域,未初始化另一块区域。系统释放。 
        4、 常量区:系统释放 
        5、代码区:

    1.2变量、指针、引用

          变量:值;指针:地址;引用:别名。

    1.3数组、链表、容器、迭代器

         数组:连续地址;链表:不连续地址;容器:动态数组;迭代器:游标。

        vector :  动态数组     

        map:key value  不重复

        set :key value   可重复

    1.4  const #define 

           const 常量

           #define 预编译前 无数据类型 字符替换     

     1.5深拷贝、浅拷贝

         浅: 内容  char p1[]="hello" ; char *p2=p1

         深 : 内容+地址  char p1[]="hello";  char *p2= new char[]; p2=p1; 

     1.6 const  static extern

          extern 变量函数定义在别处

         static 静态区 ,不是栈

      1.7 静态与全局区别

          静态:初始化一次 同一个源文件无区别

         全局: 多个文件,全局只在本文件中。

2.函数、类、结构

      2.1构造、析构

           构造函数:“先基后派”;

           析构函数:“先派后基”。

           析构:防止内存泄漏 

       2.2多态、虚函数、纯虚函数

         多态:父 ->A1 B1 C1      子类的同名函数 A1->print()都是子类

         虚函数:virtual double A();{}有实现  为了动态绑定

        纯虚函数: virtual double B()=0; 无实现  为了派生接口

      2.3 重写、重载、覆盖 同函数名

         2.3.1Overload(重载):但参数或返回值不同(包括类型、顺序不同)

                    (1)(同一类中);(2)函数名字相同;(3)参数不同;(4)virtual 可有可无。

         2.3.2Override(覆盖或重写): 

                  (1)(派生类、基类);(2)函数名字相同;  (3)参数相同; (4)必有virtual 

         2.3.3 Overwrite(重写):隐藏,是指派生类的函数屏蔽了与其同名的基类函数。(派生类、基类)

                (1)同名,异参,不论有无virtual,基类被隐藏(注意别与重载混淆)。

               (2)同名,同参,基类无virtual。此时,基类被隐藏(注意别与覆盖混淆)。

     2.4 内联函数  宏  

          inline int max(int a,int b){return a>b?a:b;}

         调用 cout<<(a>b?a:b)<<end;

         内联函数  宏 应用于调用次数比较多的情况。内联函数消除函数开销。
    2.5 size of  strlen 区别

         str[20]="0123456789";

           int a=strlen(str);//10

            int b=sizeof(str);//20  

   2.6 struct  class

     struct  封装不同类型

     class   函数 变量

      class是private,struct是public

 

posted @ 2019-09-05 14:48  jasmineTang  阅读(103)  评论(0)    收藏  举报