C++
wangxiaopang1003
这个作者很懒,什么都没留下…
展开
-
C++ 智能指针
uniqre_ptr它可以指向任意类型的内存。它是一个模板,模板需要用尖括号指定模板参数unique_ptr超出作用域或被删除时,会自动释放内存或资源unique_ptr只属于指向的对象,优点:发生异常时,必须释放存储空间 - 离开其作用域时,会自动释放存储空间Employee* anEmployee = new Employee();auto anEmployee = std::make_unique<Employee>;#如果编译器不支持C++14,可以用如下方式建立un原创 2020-05-20 20:21:01 · 92 阅读 · 0 评论 -
C++ 内存管理
堆栈 堆堆栈:堆栈上分配内存的变量不需要由程序员释放,由系统自动回收堆:必须确保释放在堆上分配的任何内存如果不希望立即分配内存,可以把它初始化为空指针 nulptrint* myIntegerPointer = nullptr;使用完动态分配的内存后,需要使用delete操作符释放内存,为防止在释放指针指向的内存后再使用指针,建议把 指针设置为nullptrdelete myIntegerPointer;myIntegerPointer = nullptr;在解除引用之前指原创 2020-05-20 20:19:41 · 166 阅读 · 0 评论 -
C++ 文件操作
C++系统中的I/O标准类,都定义在iostream.h, fstream, hstrstream.hiostream.h 包含了:iosiostreamistreamostreamfstream.h 包含了:fstreamifstreamofstreamfstreambasestrsteam.h 包含了:strstreamistrestreamostrstreamstrstreambaseiostreamios类中的枚举常量常量说明原创 2020-05-20 20:18:27 · 123 阅读 · 0 评论 -
C++ 函数后面的const
C++函数后面加const的意义表示该函数是只读函数,不会改变数据成员提高了程序的可读性一旦试图改变数据成员的值,编译器按错误处理非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)加了const的成员函数可以被非const对象和const对调用,但不加const的成员函数只能被非cosnt对象调用...原创 2020-05-20 20:17:54 · 273 阅读 · 0 评论 -
strtok
strtok分解字符串str为一组字符串,delim为分隔符char *strtok(char * str, const char *delim)#include <string.h># include <stdio.h>int main(){ char str[80] = "This|is|a|test"; const char s[2] = "|"; char *token; # 获取第一个子字符串 token = st原创 2020-05-20 20:17:13 · 156 阅读 · 0 评论 -
C++ STL 标准模板库
数据结构的基本概念数组:顺序线性结构的实现基本操作查询插入删除修改栈结构后进先出队列先进先出链表链表的存储方式不是顺序的每个对象都含有下一个对象所在位置的信息第一个元素的位置由头指针存储尾部的元素存储的位置信息为空无法通过指针偏移来找到对象 只能通过遍历访问优点:在随机位置插入和删除较为迅速图结构图结构是一个种复杂的数据结构,每个对象都可以与其它对象相关联序列容器序列容器只提供插入功能,其中元素都是有序的,但并非排原创 2020-05-20 20:16:36 · 99 阅读 · 0 评论 -
C++ 类模板
类模板的定义template<类型形式参数> class 类模板名{ //类模板体};类模板成员函数的定义template<类型形式参数表>返回类型 类模板名 <类型名表>::成员函数名(形式参数列表){ //函数体}定义一个容器的类模板template<class Type>Type Container{ Type tItem;public: Container(); void begin原创 2020-05-20 20:16:01 · 121 阅读 · 0 评论 -
C++ 函数模板
定义template <类型形式参数表> 返回类型 函数名(形式参数表){ //do something}template<class T>void fun(T t){ //do something }如果采用如下模板,传递了两个不同类型的参数,编译器会产生错误.必须显式标识模板类型template <class type>type Sum(type xvar, type yvar){ return xvar + yva原创 2020-05-20 20:15:20 · 108 阅读 · 0 评论 -
C++ 向对对象编程
面向对象的三大特点1.封装-将不同的小对象封装成一个大对象把一部分内部属性和功能对外界屏蔽2.继承单继承多继承开放性可扩充性3.多态相同的行为可作用于多种类型的对象上并获得不同的结果向对过程编程开发的程序算法 + 数据结构向对对象设计所需的各种类和对象, 决定把哪些数据和操作封装在一起考虑怎样向有关的对象发送消息类的定义class 类名标识符{public: 数据成员 成员函数private: 数据成原创 2020-05-20 20:14:46 · 163 阅读 · 0 评论 -
C++ 枚举类型
定义枚举的一般形式enum 枚举类型名 {标识符列表};enum weekday {Sunday,Monday,Thesday,Wednesday,Thursday,Friday,Saturday};带赋值的枚举类型enum 枚举类型名{ 标识符 [=整型常数], ... 标识符 [=整型常数],}枚举变量;enum weekday{ Sunday = 0, Monday = 1, Thesday = 2, Wednesda原创 2020-05-20 20:14:08 · 765 阅读 · 0 评论 -
C++ 结构体
结构体是一个构造类型结构体变量的声明方式定义struct 结构体类型名{ 成员类型 成员名 ... 成员类型 成员名}声明方式1: 在定义结构体后,使用结构体类型名声明struct PersonInfo{ int index; char name[30]; short age;};PersonInfo pInfo;方式2:定义结构体时直接声明,直接声明时,可以声明多个变量struct PersonInfo.原创 2020-05-20 20:13:20 · 115 阅读 · 0 评论 -
C++ 宏定义
定义1.不带参数的宏定义#define 宏名 字符串宏定义不是C语句,不需要在行末加分号如果在字符串中含有宏名,则不进行替换如果字符串长行一行,可以在该行末尾用反斜杠 \ 续行#define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到此源文件结束可以用 #undef 命令终止定义的作用域宏定义用于预处理命令,只作字符替换,不分配内存空间2.带参数的宏定义#define 宏名(参数列表) 字符串宏定义时参数要加括号宏扩展必须使用括号来保护表达式中低优先级的操作原创 2020-05-20 20:12:48 · 599 阅读 · 0 评论 -
C++ 共用体
共用体也叫联合体(union)共用体数据类型是将不同的数据项组织为一个整体,共用体在内存中占用首地址相同的一段存储单元。定义union 共用体类型名{ 成员类型 共用体成员1; 成员类型 共用体成员2;}声明先定义,后声明:union myUnion{ int i; char ch; float f;};myUnion u;//声明变量在定义时声明union myUnion{ int .原创 2020-05-20 20:12:09 · 1087 阅读 · 0 评论