07 2024 档案

摘要:是什么: 包含< variant > std::variant 允许列出变量所有的可能的类型,然后决定它是什么类型 代码示例: int main() { std::variant<std::string,int> value; value="Hello"; value=4; value.index( 阅读全文
posted @ 2024-07-16 10:33 Wzline 阅读(23) 评论(0) 推荐(0) 编辑
摘要:作用: 用来包装一个可能存在也可能不存在的值 当存在时我们可以选择返回其中内容,不存在时返回空; 代码示例: #include<iostream> #include<optional> #include<string> #include<fstream> std::optional<std::str 阅读全文
posted @ 2024-07-16 09:38 Wzline 阅读(21) 评论(0) 推荐(0) 编辑
摘要:返回两种不同类型的值 包含< tuple > 配合std::get<索引>(变量名) std::tuple<std::string,int> Creatperson() { return {"HH",22}; } int main() { auto person=Creatperson(); std 阅读全文
posted @ 2024-07-15 22:39 Wzline 阅读(6) 评论(0) 推荐(0) 编辑
摘要:是什么: 动态类型转换,确保类型转换是有效转换 什么时候工作: 在程序运行时计算 怎么工作: 有运行时类型信息RTTI 存储了我们所以类型运行时的类型信息 所以能够判断类型转换是否合理 写法: dynamic_cast<要转换的类型>(变量名); 代码示例: class Entity { publi 阅读全文
posted @ 2024-07-15 22:06 Wzline 阅读(8) 评论(0) 推荐(0) 编辑
摘要:作用: 当满足某些条件时才会触发断点 怎么设置: 代码左侧单击添加断点,右键条件,添加触发条件;就是说在条件断点处暂停运行; 预编译头文件 作用: 抓取头文件,编译成二进制存放在文件中,可以避免多个文件包含相同头文件时多次编译读头文件 注意: 不能将经常改动的头文件放到预编译头文件中 会导致频繁编译 阅读全文
posted @ 2024-07-15 21:32 Wzline 阅读(14) 评论(0) 推荐(0) 编辑
摘要:写法: virtual 加析构函数 工作过程:之后派生析构函数先被调用,再调用基类的析构函数,相当于多加一次虚构函数 什么时候用: 在写一个要扩展的类或子类时一定要声明析构函数是虚函数; 代码示例: class B { public: virtual ~B() } class E:public B 阅读全文
posted @ 2024-07-15 13:24 Wzline 阅读(8) 评论(0) 推荐(0) 编辑
摘要:是什么: 联合体一次只能占用一个一个成员大小,比如在里面声明四个int实际union也只有4个字节;共用内存空间 是按成员分配的类和结构体也算成员 联合体的大小最小是 最大成员大小 注意: 联合体通常匿名使用,匿名使用联合体 不能有成员函数 struct vector2 { float x,y; } 阅读全文
posted @ 2024-07-15 12:56 Wzline 阅读(7) 评论(0) 推荐(0) 编辑
摘要:int a=9; double value=a;//有隐式转换(在不损失数据的情况下转换类型) value的内存 int main() { int a = 9; double value = *(double*) & a;//把一个int型指针转换成一个double指针然后解引用 //实际上是在外面 阅读全文
posted @ 2024-07-15 11:40 Wzline 阅读(16) 评论(0) 推荐(0) 编辑
摘要:是什么: 是数组的数组,指针的集合; int* array=new int[50];//开辟50个int大小空间首地址传给array; int** a2d=new int*[50];//开辟了50个int大小的指针空间地址传给a2d; 遍历设计每个指针指向一个存有50个int类型变量的数组 代码示例 阅读全文
posted @ 2024-07-15 10:23 Wzline 阅读(7) 评论(0) 推荐(0) 编辑
摘要:包含< chrono > 作用: 能帮助查看程序运行时间 代码示例: class Timer { using namespace std::literals::chrono_literals;//duration命名空间 public: Timer() { auto start=std::chron 阅读全文
posted @ 2024-07-15 09:53 Wzline 阅读(22) 评论(0) 推荐(0) 编辑
摘要:thread 包含头文件 < thread > 代码示例: void DoWork() { std::cout<<"working" } int main() { std::thread worker(DoWork);//输入这行代码后立刻开始运行DoWork是个函数指针 worke.join() 阅读全文
posted @ 2024-07-15 08:56 Wzline 阅读(6) 评论(0) 推荐(0) 编辑
摘要:作用: 简化代码 代码示例: { using std;//在所在{}作用域中生效 cout<<"text"<<endl; } 例2: namespace apple{ void print(const char* text) { std::cout<<text<<std::endl; } } int 阅读全文
posted @ 2024-07-15 07:52 Wzline 阅读(9) 评论(0) 推荐(0) 编辑
摘要:作用: 能自动推断出是什么数据类型 代码示例: auto name()//能判断出返回值时字符串类 return std::string("hhh"); 弊端: 对变量类型不明确,可能会破坏依赖特定类型的代码 比如字符串类的.strlen() 什么时候用: 当类型过长时 int main() { s 阅读全文
posted @ 2024-07-14 16:30 Wzline 阅读(16) 评论(0) 推荐(0) 编辑
摘要:作用: 能控制实际上什么代码能被编译器接受 工作原理: 文本替换 发生在编译之前的预处理阶段 代码示例: #include<iostream> #define Log(x) std::cout<< x <<std::endl; int main() { Log("hello")//在控制台上打印he 阅读全文
posted @ 2024-07-14 15:06 Wzline 阅读(9) 评论(0) 推荐(0) 编辑
摘要:是什么: 允许你定义一个可以根据你的用途进行编译的模板 当决定调用该函数时,模版会根据情况创建函数 写法: template<typname T>//类型不固定 传什么类型是什么类型 { void print(T value) { std::cout<< value <<std::endl; } } 阅读全文
posted @ 2024-07-14 14:39 Wzline 阅读(8) 评论(0) 推荐(0) 编辑
摘要:链接库: 下载完库 在解决方案目录下创建dependencies目录,再创建个GLFW的目录;拷贝下载好的库中的 编译器对应版本 还有include文件夹 到GLFW目录下 打开vs,项目属性c/c++常规中->附加目录->添加$(SolutionDir).....include 链接到库: 项目属 阅读全文
posted @ 2024-07-14 14:17 Wzline 阅读(43) 评论(0) 推荐(0) 编辑
摘要:vector类 说明: 不强制类实际元素具有唯一性的集合;基本上是个数组,可以调大小 扩大数组的过程: 开始默认开辟一个单元大小,当扩大时,在内存上开辟一块空间比刚开始的大,再把之前的复制过来,再删掉旧的数组; 基本使用代码示例: int main() { std::vector<vertex>a; 阅读全文
posted @ 2024-07-14 13:39 Wzline 阅读(10) 评论(0) 推荐(0) 编辑
摘要:栈上的东西如何存在? 栈是类似一种数据结构 ,像摞在桌子上的一堆书,要看中间的书需要把上面的书拿走 作用域: 形象成一本书,书内声明的变量作用域结束,要把这本书从书堆中拿出来 作用域指针 是什么: 基本是个类 是一个指针的包装器,在构造时用堆分配指针 析构时删除指针,可以实现自动化new和delet 阅读全文
posted @ 2024-07-14 13:03 Wzline 阅读(3) 评论(0) 推荐(0) 编辑
摘要:作用: 可以访问成员函数——属于某个类的函数或方法; 使用位置:在类中; this.add(); this.a; 是什么: 一个指向当前对象实例的指针 代码示例: class Entity { public: int x, y;//this指向这里 Entity(int x, int y) { th 阅读全文
posted @ 2024-07-14 09:56 Wzline 阅读(4) 评论(0) 推荐(0) 编辑
摘要:运算符重载是什么: 重新赋予运算符新含义,添加参数或创建,允许在程序中定义或修改运算符的行为 类似函数一样。 重载位置:在类中写相当于 举例:要实现两个向量相加 struct Vector2 { float x, y; Vector2(float x, float y)//初始化结构体变量 :x(x 阅读全文
posted @ 2024-07-14 09:38 Wzline 阅读(14) 评论(0) 推荐(0) 编辑
摘要:是什么: 相当于if语句的语法糖 代码示例: std::string rank=level>10?"Master":"Begining"; 判断条件?为真保留:为假保留; 可以嵌套使用,最好别用 看的头疼; 栈通常非常小 通常为1兆2兆; 浅要提及 堆上分配比栈花费更多时间,而且要手动释放内存 若对 阅读全文
posted @ 2024-07-13 14:53 Wzline 阅读(5) 评论(0) 推荐(0) 编辑
摘要:什么意思: 初始化类成员的一种方法 什么时候用: 编写一个类并向该类中添加成员时 要用某种方式对这些成员进行初始化 代码示例: class Entity { private: std::string m_name; int m_score; public: Entity() :m_name("UnK 阅读全文
posted @ 2024-07-13 12:58 Wzline 阅读(5) 评论(0) 推荐(0) 编辑
摘要:目的: 是一种机制可以让代码更加干净,用来规范开发人员有点类似可见性的概念。 写法1 const int* a=new int;//修饰的inta 表面不能修改解引用的内容 int b=1; const inta =&b; a=7//会报错; 写法2 int const a=new int;//不能 阅读全文
posted @ 2024-07-13 12:43 Wzline 阅读(7) 评论(0) 推荐(0) 编辑
摘要:是什么: 相同类型元素的集合 写法: int example[3]//数组在声明大小时必须为常数 数组名 example是个指针类型 如int*ptr=example; 数组索引的工作原理: example[3]//从首地址位置偏移数组类型大小(int 是 4字节)乘索引值(4*3)个字节 //从当 阅读全文
posted @ 2024-07-13 12:07 Wzline 阅读(17) 评论(0) 推荐(0) 编辑
摘要:含义: 谁能看到他们 谁能调用? 谁能使用? 可见性的修饰符: private 含义: 只有其所在的类可以访问,被修饰的变量 但是friend关键字可以让类 或者函数成为朋友(友元) 可以在别处访问私有成员 protected 含义: 所在的类和层次结构中的所有 子类 可以访问这些符号 例子: cl 阅读全文
posted @ 2024-07-13 09:42 Wzline 阅读(51) 评论(0) 推荐(0) 编辑
摘要:定义: class TIme:public Ent//Ent Time 是Ent的子集 继承Ent类的公开变量 //Time 可共享Ent ,Ent不能共享Time类 虚函数: 功能: 允许在子类中重写方法 也就是本例子中的Time类中,在Ent类中重写virtual让它做其他事情 例如: clas 阅读全文
posted @ 2024-07-13 09:13 Wzline 阅读(7) 评论(0) 推荐(0) 编辑
摘要:是什么:有个公共功能的基类。允许从基类中分离出来,从最初的父类中创建子类 目的:简化代码避免重复 写法: class TIme :public Ent//time是Ent的超集 例子 class position { public: const int addres=1; }; class Play 阅读全文
posted @ 2024-07-08 14:53 Wzline 阅读(4) 评论(0) 推荐(0) 编辑
摘要:枚举 是什么:给一个值命名的方法 将一组数值集合 可赋值任何数 写法; enum FF:unsigned char//枚举类默认32位整型 这里改成八位整型 { warn,error,info,//默认从零开始 warn值为0 error 1 info 2 }; int main() { FF le 阅读全文
posted @ 2024-07-08 10:43 Wzline 阅读(9) 评论(0) 推荐(0) 编辑
摘要:static 使用位置 在类或结构体中时: 在这个类的所有实例中,这个变量只有一个实例(就是说所有类实例都共享这个变量的值,这个变量的值一改变,所有类中的这个变量的值都改变) 例子:如果我们定义了一个类叫people,这个类中有一个变量是satic int x,之后我们在主函数中声明两个people 阅读全文
posted @ 2024-07-08 09:48 Wzline 阅读(19) 评论(0) 推荐(0) 编辑
摘要:引用 作用 引用现有变量,引用本身不占空间 相当于别名 int a=1; int& ref=a;//重命名a ref 只在源文件中出现不会创建内存地址还是a的; 例子 #include"xunhuan.h" void log(int& h) { h++; } int main() { int a = 阅读全文
posted @ 2024-07-08 08:40 Wzline 阅读(4) 评论(0) 推荐(0) 编辑
摘要:指针是什么 一个指针是一个地址是个保存内存地址的整数,对指针类型的定义不会影响变量的内存,但对内存的操作有用内存是个线性的线,周围有很多屋子,每个屋子都一个地址占一个字节,指针就是指这些地址。 注意事项 int*point=0//这种写法是无效指针 可以替换为int* point=NULL; 具体使 阅读全文
posted @ 2024-07-07 12:10 Wzline 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.关于函数 作用:避免代码重复 可以方便维护,因为当多个地方需要用到同样的代码时,如果要做出修改只需要改函数就能整体修改。 函数通常都会有返回值,什么类型的函数返回什么样的类型的值 函数通常分为函数声明和函数参数通常声明放在头文件中 函数定义发在C++文件中 这样做可以在别的C++文件用到相同函数 阅读全文
posted @ 2024-07-07 11:41 Wzline 阅读(14) 评论(0) 推荐(0) 编辑
摘要:int变量 意义:在内存中占四个字节的大小每个(不同编译器可能不同) 存储的范围是2的31次方 之所以不是32次 是因为int 类有一个符号位; char(1字节) 通常来存储字符 实际上存的还是数字 呈现出来的是 ASCII码对应的字符 如: char a=65; std::cout<<a<<st 阅读全文
posted @ 2024-07-07 11:40 Wzline 阅读(10) 评论(0) 推荐(0) 编辑
摘要:1.visual studio2022 创建项目以及创建C++文件 完成上述步骤之后我们就可以敲代码了!! 2.关于编译和链接 1.ctrl+F7 对当前C++文件进行编译 并会在编译成功后生成.obj文件。 2.F5 运行整个项目 就会将一个项目下的所有 C++文件进行编译 再将编译后生成的.ob 阅读全文
posted @ 2024-07-06 11:12 Wzline 阅读(9) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示