随笔分类 -  C++

记录自己学C++的笔记 遇到的问题和处理方法
摘要:是什么: 包含< 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) 编辑

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