#define 定义的常量是没有类型的,编译器把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换;
const 定义的常量有类型名字,存放在内存的静态区域中,在程序运行过程中const变量只有一个拷贝,而#define 所定义的宏变量却有多个拷贝,所以宏定义在程序运行过程中所消耗的内存要比const变量的大得多;
define定义的常量是不可以用指针变量去指向的,用const定义的常量是可以用指针去指向该常量的地址的;
用define可以定义一些简单的函数,const是不可以定义函数的.
const在编译的时候编译器会把其放在符号列表里,不给他分配空间,只有在第一次使用的时候才给他分配内存空间.
new(delete) malloc(free) new 、delete 是操作符,可以重载,只能在C++ 中使用。 malloc、free 是函数,可以覆盖,C、C++ 中都可以使用。 malloc() 函数只创建对象,new 不只是分配了内存,它还创建了对象。
namespace 命名空间就是定义了一个范围。调用 名字::函数名
template 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数, 这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。
组件 | 描述 |
---|
容器(Containers) | 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。 | 算法(Algorithms) | 算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。 | 迭代器(iterators) | 迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。 |
简述#ifdef、#else、#endif和#ifndef的作用 利用#ifdef、#endif将某程序功能模块包括进去,以向特定用户提供该功能。在不需要时用户可轻易将其屏蔽。采 用 条 件 编 译 ,可 以 减 少 被 编 译 的 语 句 , 从 而 减 少 目 标 程 序 的 长 度 , 减 少 运 行 时 间 。
static
C + + 的 静 态 成 员 则 可 以 在 多 个 对 象 实 例 间 进 行 通 信 , 传 递 信 息。
全局变量(内存:全局数据段)与局部变量(内存:堆栈)
全局变量是整个程序都可访问的变量,谁都可以访问,生存期在整个程序从运行到结束(在程序结束时所占内存释放); 而局部变量存在于模块(子程序,函数)中,只有所在模块可以访问,其他模块不可直接访问,模块结束 (函数调用完毕),局部变量消失,所占据的内存释放。
一 个 C 、 C + + 程 序 编 译 时 内 存 分 为 5 大 存 储 区 : 堆 区 、 栈 区 、 全 局 区 、 文 字 常 量 区 、 程 序 代 码 区 。
队 列 和 栈 都 是 线 性 存 储 结 构 , 但 是 两 者 的 插 入 和 删 除 数 据 的 操 作 不 同 , 队 列 是 “ 先 进 先 出 ” , 栈 是 “ 后 进 先 出 ” 。
C + + 中 四 种 类 型 转 换 是 : s t a t i c _ c a s t , d y n a m i c _ c a s t , c o n s t _ c a s t , r e i n t e r p r e t _ c a s t
|