CPP:STL库

CPP:STL库 C++泛型编程和STL技术 1.模版 学习模版并不是为了写模版,而是在STL中能够运用系统提供的模版 1.1 函数模版 模版就是建立通用的模具,大大提高复用性 C++中另一种编程思想称为泛型编程,主要利用的技术就是模版 C++中提供两种模版机制:函数模版和类模版 1.1.1 函数模版语法 建立一个通用函数,其函数的返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表 语法:template关键字声明一个通用数据类型T 1 2 template<typename T> 函数声明或定义 template声明创建模版 typename表明其后面的符号是一种数据类型,可以用class代替 T:通用的数据类型,名称可以替换 1 2 3 4 5 6 template <typename T> void swap(T &a, T &b) { T temp = a; a = b; b = temp; } 自动类型推导:我们在模版中使用通用类型T,当传入具体的数据类型时,根据该数据类型推导出T的类型 ...

July 17, 2024 · 14 min · sudo

CPP面向对象

CPP面向对象 1. 内存分区模型 代码区:二进制代码 全局区:全局变量和静态变量以及常量 栈区:编译器自动分配释放,存放局部变量 堆区:程序员分配和释放 1.1 程序运行前 ​ 程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域 代码区 存放CPU执行的机器指令 代码区是共享的 代码区是只读的 全局区 全局变量、静态变量(static) 常量区:字符串常量和const修饰的全局变量 该区域的数据在程序结束后由操作系统回收 1.2 程序运行后 栈区:由编译器自动分配释放,存放函数的参数值和局部变量 不要返回局部变量的地址 1 2 3 4 int * func() { int a = 10; // 函数中的局部变量,存放在栈区,栈区的数据在函数执行完后自动释放 return &a; } 局部变量:在函数中定义;全局变量:在函数外定义 在函数中定义的局部变量存放在内存中的栈区,在函数运行结束后编译器自动释放 回想MIPS函数调用规范中的分配栈 堆区:由程序员分配释放 在c++中由new关键字在堆区中申请内存 1 int * p = new int(10); 该局部变量不会随函数结束被回收,即堆区的变量与栈区的变量有不同的生命周期 1.3 new操作符 用new操作符在堆区开辟数据 基本语法:new 数据类型 (初始值)|[元素个数],返回该数据类型的指针 1 2 3 4 int *p = new int(10); // 创建int型变量 int *arr = new int[10]; // 创建一个数组 [] delete p; delete[] arr; 用delete操作释放内存,释放数组加[] ...

July 15, 2024 · 10 min · sudo