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
常对象只能调用常方法