C++总复习--2--C++程序设计--C/C++区别

C++总复习--2--C++程序设计--C/C++区别

1.new和malloc的区别

2.重载函数(重定义),C++函数符号的生成规则

3.引用与指针的区别

4.inline函数的特点,与宏,普通函数,static修饰的函数的区别

5.C/C++的相互调用

6.const用法


1.new和malloc的区别

(1)new关键字            malloc函数

(2)new系统计算大小      malloc程序员设计

(3)new返回值类型安全    malloc返回值类型不安全

(4)new还可以做初始化    malloc只开辟内存

(5)new[]  数组个数       malloc总大小

(6)new  自由存储区域    malloc堆

(7)内存申请失败

     new抛出bad_alloc     malloc返回NULL

(8)new关键字可以重载   malloc不能重载     operator new  开辟内存

2.函数重载

  (1)同名(2)不同参数(3)同一作用域

   C++的函数符号生成规则支持

  函数返回值如果不同,不能构成重载

C++三大特征:  封装  继承  多态

多态    静多态:编译确定函数调用

                   函数重载  模板   

          动多态: 运行确定函数调用

                  继承和虚函数

重写和重定义区别:

同名函数:

(1)重载   重定义

(2)隐藏

(3)覆盖   重写

3.引用和指针的区别

 引用就是起  别名

底层以指针的形式来实现的

引用的特点:(1)引用一定要初始化

                     (2)引用是不能改变的

                     (3)引用是不能取地址的数据

                     (4)引用变量只能使用所引用的内存单元

4.inline函数

函数的调用点代码直接展开

特点:没有开栈和清栈的开销    效率高    本文件可见

         (1)inline函数和普通函数区别,就是特点

         (2)inline函数和static修饰的函数的区别

                    inline函数代码直接展开;static  g==>l

        (3)inline函数和宏的区别

                    inline函数   编译      安全检查和类型检查

                    宏               预编译    没有

                    Inline是一种更安全的宏

Inline缺点:

        代码膨胀为代价,以空间换时间的概念

建议:函数执行的开销   >    函数开栈的开销      建议用inline函数

特征:

       (1)inline 写在.h

       (2)Inline只在Release版本生效

       (3)Inline只是给编译器的一个建议    循环   递归

       (4)Inline基于实现,不是基于声明

5.C/C++区别

      (1)C++调用C

在C++中:

extern "C"

{

}

包含的代码以C语言的规则来进行处理

      (2)C调用C++    C++代码允许修改和不允许修改两个方面讲

6.const用法

C:

      const修饰的变量  常变量

      编译查看常变量有没有做左值,其他的处理方式和变量相同

C++:

      const修饰的变量   常量

      编译把用到常量的地方替换成常量初始化的值

     (1)常量一定要初始化

     (2)常量不允许修改

             (2.1)直接修改

             (2.2)间接修改

C++  中const的用法

      (1)const变量

               (1.1)全局变量     const  int  gdata  =  10;//l  本文件可见

               (1.2)局部变量     const  int  ldata  =  20;//常量  函数中

               (1.3)成员变量     const  int  mdata  =  20;//类中

     (2)const类成员方法

             常方法   type* const this  

                      cosnt  type* const this

             常对象只能调用常方法

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_41103495/article/details/107940899