文章分类 -  C++

C++相关知识
摘要:C++关键字 static 类和结构体外的static 被static修饰后只在内部发生链接,其作用域只在其所在的文件中。 类和结构体内的static struct Entity { static int x, y; 静态成员变量 static void Print() { std::cout << 阅读全文
posted @ 2024-05-26 10:40 单身喵 阅读(148) 评论(0) 推荐(0)
摘要:函数 函数默认参数 函数的形参列表中的形参是可以有默认值的。 语法: 返回值类型 函数名 (参数= 默认值){} int function(int a, int b = 10, int c = 10) { return a + b + c; } 注意事项: 若传入数据,则使用传入的数据,否则使用默认 阅读全文
posted @ 2024-05-26 10:38 单身喵 阅读(4) 评论(0) 推荐(0)
摘要:派生与继承 继承的方式 派生类(子类)是从基类(父类)继承而来的类,派生类将继承基类的属性; class Entity { public: float X, Y; void Move(float ax, float ay) { X += ax; Y += ay; } }; 公有继承:基类中的公有成员 阅读全文
posted @ 2024-05-23 17:07 单身喵 阅读(10) 评论(0) 推荐(0)
摘要:类型转换(cast) dynamic_cast dynamic_cast是专门用于沿继承层次结构进行的强制类型转换,其做了额外的验证工作去保证转换是有效的。该转换不是在编译时进行的,而是在运行时进行。当从父类转换成子类时,若转换失败dynamic_cast会返回空指针NULL。dynamic_cas 阅读全文
posted @ 2024-05-23 17:06 单身喵 阅读(4) 评论(0) 推荐(0)
摘要:内存分区模型 程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的。 全局区:存放全局变量和静态变量以及常量。 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等。 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。 程序运行前 ​ 阅读全文
posted @ 2024-05-23 17:06 单身喵 阅读(5) 评论(0) 推荐(0)
摘要:数组 vector容器 vector的基本概念 vector数据结构和数组非常相似,也称为单端数组 不同之处在于数组是静态空间,而vector可以动态扩展 vector容器的迭代器是支持随机访问的迭代器 创建一个动态数组(动态数组在堆上创建内存): std::vector<type> v; //创建 阅读全文
posted @ 2024-05-23 17:06 单身喵 阅读(3) 评论(0) 推荐(0)
摘要:模板 C++另一种编程思想称为泛型编程,主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板 函数模板 函数模板的基本概念 函数模板作用: 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。 语法: template<typename T> //函数声明 阅读全文
posted @ 2024-05-23 17:06 单身喵 阅读(6) 评论(0) 推荐(0)
摘要:文件操作 文件类型分为两种: 文本文件 - 文件以文本的ASCII码形式存储在计算机中 二进制文件 - 文件以文本的二进制形式存储在计算机中 操作文件的三大类: ofstream:写操作 ifstream: 读操作 fstream : 读写操作 文件打开方式: 打开方式 解释 ios::in 为读文 阅读全文
posted @ 2024-05-23 17:05 单身喵 阅读(8) 评论(0) 推荐(0)
摘要:引用 引用的语法 语法: 数据类型 &别名 = 原名 引用的本质是指针常量。 (int& b = a) == (int * const ref = &a) //自动转换为 int* const ref = &a; 指针常量是指针指向不可改,也说明为什么引用不可更改 int& ref = a; ref 阅读全文
posted @ 2024-05-23 17:05 单身喵 阅读(12) 评论(0) 推荐(0)
摘要:指针 智能指针 作用域指针(unique_ptr) 超出作用域时会调用delete,销毁指针。 作用域指针不能复制,因为当其中一方销毁时,指针所指向内存会被释放。 std::unique_ptr<Entity> e1 = std::make_unique< Entity>(); std::uniqu 阅读全文
posted @ 2024-05-23 17:05 单身喵 阅读(7) 评论(0) 推荐(0)
摘要:重载运算 算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型. 算数运算符 注意事项: 对于内置的数据类型的表达式的的运算符是不可能改变的 不要滥用运算符重载 成员函数重载: class Entity { public: int m_X, m_Y; Entity ope 阅读全文
posted @ 2024-05-23 17:05 单身喵 阅读(5) 评论(0) 推荐(0)
摘要:类 一种用户定义的引用[数据类型 类的基本概念 定义一个类: class Player { public: //访问权限 int x, y; int speed; //变量 void Move(int ax, int ay) //方法 { x += ax * speed; y += ay * spe 阅读全文
posted @ 2024-05-23 17:04 单身喵 阅读(6) 评论(0) 推荐(0)
摘要:可变参数模板 上周末实现双向链表时参照了STL中的list链表,在查阅文档时发现list下的emplace方法的模板参数是template< class... Args > 当时就很疑惑,不知道这是什么参数,在网上学习了他人的博客后在此写下自己的见解。 可变参数的概念 可变参数即可以接收多个参数,如 阅读全文
posted @ 2024-03-21 00:02 单身喵 阅读(7) 评论(0) 推荐(0)
摘要:前几天去面试时被问到左值和右值有什么区别,结果我根本答不出来,甚至没有很清楚的左右值概念。于是之后通过网上的视频和他人的博客学习了一下。在此写下我自己的见解。 左值、右值和移动语义 左值和右值 C++的表达式分为左值表达式和右值表达式,右值又分为纯右值和将亡值。 左值和右值的定义: 指代非临时对象且 阅读全文
posted @ 2024-03-14 22:08 单身喵 阅读(12) 评论(0) 推荐(0)