摘要: 一、vector三种遍历方式 fori for iterator 二、遍历及调用注意事项 引用传递避免复制 三、reserve(size) 指定size,避免resize 四、emplace_back 替代 push_back, 避免copy #include<iostream> #include< 阅读全文
posted @ 2025-12-11 10:20 超轶绝尘 阅读(4) 评论(0) 推荐(0)
摘要: #include<iostream> //1. 原始类型拷贝(栈空间) void prototypeCopyStack() { int a = 1; //将a的值拷贝给b,而不是将b指向a int b = a; //拷贝新对象 b = 3; std::cout << a << " | " << b 阅读全文
posted @ 2025-12-11 10:19 超轶绝尘 阅读(5) 评论(0) 推荐(0)
摘要: 一、何为作用域指针 如果栈上的变量会自动消失,那他有什么用呢?有没有其他办法,让他用在好的方面? 答案是有的。他在很多方面都非常有用,可以帮助我们自动化代码。 eg: 其中我们可以做的一件事是,比如说利用类的作用域来实现的,像是智能指针:smart_ptr,或是unique_ptr,这是一个作用域指 阅读全文
posted @ 2025-12-11 10:19 超轶绝尘 阅读(28) 评论(0) 推荐(0)
摘要: 析构函数的调用时机 栈对象在当前栈作用域被释放时自动被释放,且调用析构函数 堆对象需要手动delete,才能被释放,和调用析构函数 #include<iostream> class Entity22 { public: int x; Entity22() { std::cout << "Create 阅读全文
posted @ 2025-12-11 10:18 超轶绝尘 阅读(8) 评论(0) 推荐(0)
摘要: #include <iostream> class Vector2 { public: float x, y; public: Vector2(float x, float y): x(x), y(y) {} Vector2 Add(const Vector2& other) { //return 阅读全文
posted @ 2025-12-11 10:17 超轶绝尘 阅读(4) 评论(0) 推荐(0)
摘要: 隐式 不会明确的告诉你它要做什么,有点像某种情况下的自动的工作。实际上,C++允许编译器对代码进行一次隐式转换。C++允许隐式地转换,不需要用cast等做强制转换。 explicit 禁用constructor隐式转换 #include<iostream> #include<string> clas 阅读全文
posted @ 2025-12-11 10:16 超轶绝尘 阅读(6) 评论(0) 推荐(0)
摘要: 一、new 关键字综述 new 关键字很有趣,因为它很深奥。很多人会使用new,但他们并没有真正去思考它。实际上当你编写C++程序的时候,你需要关心内存,性能和优化等问题。因为,如果你不考虑这些问题的话,那为什么还要用C++呢?有很多其他编程语言可以用,现在都2025年了,为什么还要用C++呢?除非 阅读全文
posted @ 2025-12-11 10:15 超轶绝尘 阅读(6) 评论(0) 推荐(0)
摘要: Java 程序员习惯new,但C++不一样 一个最大的问题是,我看到每个来自托管语言比如Java或C#的人,他们会在C++中到处使用new关键字 但在C++中你不应该这样做,有2个原因。后面谈及。 简单来说就是因为性能的原因。在堆上分配要比在栈上分配花费更长的时间。 而且在堆上分配内存的话,那你必须 阅读全文
posted @ 2025-12-11 10:13 超轶绝尘 阅读(6) 评论(0) 推荐(0)
摘要: 注意事项 尽量用括号的形式去初始化成员变量,避免成员变量的被多次初始化 括号形式构造成员变量: 顺序需和成员变量定义顺序保持一致 #include<iostream> class Entity { public: int m_Score; std::string m_Name; //以属性名称 + 阅读全文
posted @ 2025-12-11 10:12 超轶绝尘 阅读(5) 评论(0) 推荐(0)
摘要: 一、const方法 二、指针常量 和常量指针 三、multable 修饰变量,使可以在常量方法中被修改 修饰lambada表达式, #include<iostream> // 标记, lambada表达式中,访问外部变量数据 void mutableLambadaFunction() { int x 阅读全文
posted @ 2025-12-11 10:10 超轶绝尘 阅读(8) 评论(0) 推荐(0)
摘要: 一、默认编码 ASCII ASCII可以拓展为很多,比如UTF-8、UTF-16、 UTF-32 还有宽字符(wide string) 当然,字符其实是可以大于一个字节的,在其他语言中(日语、中文)有两个、三个、四个字节的字符。 二、大小 1字节 byte, 就是8bit,= 2^8 = 256 种 阅读全文
posted @ 2025-12-11 10:10 超轶绝尘 阅读(9) 评论(0) 推荐(0)
摘要: 一、数组的创建 栈分配:int example[5]; 方法结束栈空间自动释放 堆分配:int* arr = new int[5]; 需要手动删除 #include<iostream> int main() { //1. 栈上分配数组空间,当前方法结束自动释放空间(栈空间内存有限),不必手动删除 i 阅读全文
posted @ 2025-12-11 09:54 超轶绝尘 阅读(8) 评论(0) 推荐(0)
摘要: 一、虚函数的意义 虚函数引入了一种动态分配的概念,一般通过虚表(vtable)来实现编译。虚表就是一个包含所有虚函数映射的列表。通过虚表,我们可以在运行时找到正确的被重写的函数。简单来说,如果你想重写一个函数,那么你必须要把基类中的原函数设置为虚函数,否则父类引用调用的方法则是父类自身的方法,而不是 阅读全文
posted @ 2025-12-11 09:36 超轶绝尘 阅读(7) 评论(0) 推荐(0)
摘要: 一、不写构造函数带来的问题 属性值未被初始化,是内存上的脏数据 创建对象语句,于编译期报错:Using uninitialized memory 不同于java,属性有默认值,C++属性的初始值需要程序员手动指定 #include<iostream> class Entity { public: i 阅读全文
posted @ 2025-12-11 09:35 超轶绝尘 阅读(4) 评论(0) 推荐(0)
摘要: 一、java枚举 import org.junit.Test; enum EnumA { A, B, C; } public class TestEnum { @Test public void testEnum() { System.out.println(EnumA.A); //A System 阅读全文
posted @ 2025-12-11 09:12 超轶绝尘 阅读(10) 评论(0) 推荐(0)
摘要: 一、类内static 和 类外(全局)static class 和 struct 内 (此类或此struct的所有实例公共可见) class 和 struct 外 (只在当前编译单元可见 xxx.obj) (1)Main.cpp #include<iostream> int s_Variable = 阅读全文
posted @ 2025-12-11 09:10 超轶绝尘 阅读(6) 评论(0) 推荐(0)