![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 76
小飞1116
这个作者很懒,什么都没留下…
展开
-
【C++11】=default与=delete关键字使用详解
但是,使用=delete关键字相比直接删除函数,能更清晰、更明确地表达我们的意图,提高代码的可读性和可维护性。通过查看函数前面的=delete关键字,我们可以快速地判断出这个函数是否应该被调用,而不必去深入阅读函数的实现细节。但是,如果我们不想让某个操作符被重载,可以使用=delete关键字来删除它。但是需要注意的是,只有在必要的情况下才应该使用=default关键字,否则可能会影响程序的性能和可读性。=delete是C++11引入的一个新的关键字,它用于显式地删除一个已经定义的函数或操作符来阻止拷贝。原创 2023-11-23 00:02:03 · 408 阅读 · 0 评论 -
【C++11】weak_ptr智能指针使用详解
在C++编程中,处理循环引用是一个常见的问题。循环引用可能导致内存泄漏和资源管理问题。为了解决这个问题,C++11引入了weak_ptr智能指针。弱指针(weak_ptr)是一种不受控制所指向对象生存期的智能指针,它指向由一个shared_ptr管理的对象。允许你共享对象的所有权,但不会增加对象的引用计数。它是一种弱引用,不会阻止对象的销毁。一旦一个指向对象的shared_ptr被销毁,对象就会被释放。即使有weak_ptr指向对象,对象也会被释放。原创 2023-11-17 16:37:06 · 361 阅读 · 0 评论 -
【C++11】auto与decltype关键字使用详解
auto和decltype是C++11引入的俩个重要的新关键字,用于在编译期自动推导出变量或表达式的类型。极大提高代码的可读性和简洁性,并且有助于减少类型转换错误。在不影响代码可读性的前提下可以尽可能的使用auto。复杂类型用auto,但是简单内置类型就没有必要使用auto了。总之避免过度使用auto和decltype,以保持代码的可读性和维护性。原创 2023-11-22 23:32:19 · 80 阅读 · 0 评论 -
【C++11】nullptr关键字使用详解
C++11引入了nullptr关键字,它是一种空指针类型,用于表示空指针。总的来说,nullptr是以一种更安全、更清晰的方式来处理空指针。只要正确理解和合理使用,它就能够帮助我们编写出质量更高、更容易维护的代码。原创 2023-11-24 18:13:59 · 505 阅读 · 0 评论 -
【C++11】shared_ptr智能指针使用详解
shared_ptr智能指针使用详解原创 2023-11-16 00:17:29 · 419 阅读 · 0 评论 -
【C++11】范围for循环使用详解
C++11引入了范围for循环(range-based for loop),使得遍历容器变得更加简洁和方便。范围for循环使用一对迭代器来定义容器的范围,并自动迭代容器中的每个元素。原创 2023-11-24 18:29:15 · 202 阅读 · 0 评论 -
【C++11】多线程创建/互斥详解
C++多线程的创建和管理原创 2024-04-30 16:37:28 · 705 阅读 · 1 评论 -
【C++11】智能指针与动态内存
C++11智能指针介绍原创 2023-11-13 23:47:03 · 60 阅读 · 0 评论 -
【C++11】右值引用使用详解
C++11右值引用使用详解原创 2023-11-21 00:15:24 · 174 阅读 · 0 评论 -
【C++11】unique_ptr智能指针使用详解
C++11 unique_ptr智能指针使用详解原创 2023-11-17 15:28:36 · 657 阅读 · 0 评论 -
【C++11】Lambda表达式使用详解
Lambda表达式使用详解原创 2023-11-20 23:31:27 · 257 阅读 · 0 评论 -
【C++11】线程池类简单说明
线程池是C++11标准引入的,是一种多线程并发编程的实现模式,它可以在程序启动时预先创建一定数量的线程,并将这些线程放入一个线程池中,以便在需要时可以快速地分配任务给线程执行,从而提高程序的并发性和执行效率。线程创建和销毁开销:频繁地创建和销毁线程会带来较大的开销和时间的浪费,影响应用程序的性能。线程调度的开销:操作系统在调度线程时也需要花费一定的时间和资源。当有大量线程需要调度时,这些开销会显著增加,进一步影响应用程序的性能。原创 2024-04-30 16:49:45 · 263 阅读 · 0 评论 -
C++ 面向对象编程提高代码的效率性和健壮性
一、通过引用来传递和返回对象和其他变量一样,对象既可以通过传值方式,也可以通过引用方式来传递和返回。一般来说,除非迫不得已,都采用引用方式。这是因为通过传值方式来传递和返回对象需要面临对象间的拷贝操作,是数据变大,从而降低效率,浪费内存。(传递一个指向对象的指针与引用方式效果相同)class Test{public: void set(int n) { nNum = n; };原创 2017-07-17 11:42:10 · 772 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数创建一个新的对象,此对象是另外一个对象的复制品:将原对象的数据成员逐一赋值给目标对象相应的数据成员。没有的话会自动生成一个默认构造函数。// 原型(参数类型必须是引用)Person(Person&);或Person(const Person&);// 如果有多个参数,第一个参数以后的所有参数必须有默认值或Person(const Person&, bool married = f原创 2017-07-18 16:59:46 · 229 阅读 · 0 评论 -
C++构造函数初始化列表
class Test{public: // const型数据成员初始化的唯一方法 Test():z(0), d(1) { x = 2; y = 3; };private: int x; int y; const int z; const int d;};原创 2017-07-18 17:53:24 · 173 阅读 · 0 评论 -
C++ 多态 (纯)虚函数 虚函数表解析
多态 定义: 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数原理: C++多态性是通过虚函数来实现的 多态与非多态的实质区别就是函数地址是早绑定还是晚绑定。如果函数的调用,在编译器编译期间就可以确定函数的调用地址,并生产代码,是静态的,就是说地址是早绑定的。而如果函数调用的地址不能在编译器期间确定,需要在运行时才确定,这就属于晚绑定。作用: 那么多态的作用是什么呢,封转载 2017-08-16 14:39:11 · 1104 阅读 · 0 评论 -
指针传值易注意点
struct _ClassA { int x; int y;}ClassA, PCLassAFun(ClassA *p){ ClassA a; a.x = 1; a.y = 2; p = &a; }// 调用Fun后,会发现p指针还是指向NULLClassA *p = NULL;Fun(p);p指针还是指向NULL,原因如下: 传进函数原创 2017-08-02 18:04:11 · 217 阅读 · 0 评论 -
C++ 单例设计模式
有些类只需要有一个实例,比如软件开发过程中的日志功能,因为我们要频繁的写log,不可能每次都要重新new一个日志实例,然后用完再delete。当然在C++中可以用全局变量来代替,但全局变量有太多的不可预测性,特别是在多线程的开发中,所以对全局变量我们是能不用就不用。此时单例设计模式就派上用场了。先上代码,在分析为何这么写。// Singleton.h#pragma once#include <w原创 2017-08-04 18:00:09 · 351 阅读 · 0 评论