
C++
文章平均质量分 73
MobiCetus
Talk is cheap
展开
-
【C++重点】deque
queue是 C++ 标准库中的一个容器适配器,它实现了先进先出(FIFO)数据结构。即,元素按照插入的顺序排队,首先插入的元素最先出队。queue适用于需要排队处理任务的场景,比如消息队列、任务调度等。原创 2025-04-02 22:04:25 · 327 阅读 · 0 评论 -
【C++重点】Stack Unwinding
栈展开是指在异常处理过程中,程序如何从抛出异常的地方开始,逐步回溯并清理栈帧的过程。每个函数调用都会在栈上分配一块空间来存储局部变量和返回地址。当异常被抛出时,程序会逐步清理这些栈帧,直到找到一个合适的异常处理程序或者到达程序的入口点。当一个异常被抛出时,程序会在当前栈上执行展开过程,回溯调用栈的每一层,直到遇到一个捕获该异常的 catch 语句为止。如果栈帧中包含需要销毁的资源(如动态分配的内存),它们将被释放。栈展开的关键过程是:异常被抛出,程序跳转到最近的 catch 语句。原创 2025-04-01 11:28:57 · 131 阅读 · 0 评论 -
【C++重点】lambda表达式是什么
捕获列表](参数列表) -> 返回类型 { 函数体 }捕获列表:用于指定外部变量如何传递给 Lambda 函数。可以捕获局部变量或者全局变量。参数列表:与普通函数相同,定义传入的参数。返回类型:如果 Lambda 有返回值,可以指定返回类型。如果省略,编译器会自动推断。函数体:Lambda 的实现部分。greet();// 调用 lambda 函数return 0;输出;// 自动推导返回类型为 int// 输出:Product: 20return 0;原创 2025-03-31 22:15:36 · 235 阅读 · 0 评论 -
【C++重点】虚函数与多态
每个包含虚函数的类都会有一个虚函数表,虚函数表包含指向该类虚函数的指针。当你通过 basePtr->show() 调用虚函数时,程序会查找 basePtr 所指向对象的 vptr,然后找到该对象的 虚函数表(vtable),并通过虚函数表中的函数指针调用 Derived 类中的 show() 函数。当 Base 类的指针(basePtr)指向 Derived 类的对象时,basePtr 会持有指向 Derived 类对象的虚函数表的指针(即 vptr)。是一个包含指向虚函数的指针的结构,在本例中,原创 2025-03-29 19:29:28 · 985 阅读 · 0 评论 -
必须知道的C++基础
std’ 也叫做标准命名空间,或者可以理解为命名空间。命令会告知编译器将 std 命名空间中的所有内容引入到全局命名空间中,这样我们就可以直接使用cout和cin,而不需要写std::cout和std::cin。引用是一个已初始化的别名,用于指向一个已有的变量。通过引用,可以直接操作原始变量的值。定义:函数接收的是实参的副本,修改副本不会影响原始数据。特点:会复制数据,性能开销较大,尤其是传递大型对象时。token 是程序中最小的独立元素,编译器可以理解它。关键词:对编译器具有特殊意义的词。原创 2025-03-28 19:01:30 · 654 阅读 · 0 评论 -
C++ 中将函数作为参数传递
函数可以通过传递函数的地址来作为参数传递;简而言之,就是通过指针实现这一点。原创 2025-03-28 17:09:22 · 323 阅读 · 0 评论 -
C++中的智能指针
正如我们不自觉地发现的那样,未释放指针会导致内存泄漏,可能会导致程序崩溃。由于没有释放的内存,最终会导致内存泄漏,整个堆内存可能因此变得无用。由于析构函数会在对象超出作用域时自动调用,因此动态分配的内存会自动被删除(或者引用计数会减少)。智能指针类的对象看起来像普通指针,但与普通指针不同,它可以释放销毁的对象内存。:悬空指针是指在对象从内存中被释放后,没有修改指针的值。:野指针是已经声明并分配了内存的指针,但该指针从未初始化为指向有效的对象或地址。描述一个对象时,它会存储指向单个分配对象的指针。原创 2025-03-27 20:22:40 · 847 阅读 · 0 评论