- 博客(34)
- 收藏
- 关注
原创 nullptr的意义
是C++11引入的一个特殊的字面量,用于明确表示“空指针”。它的引入解决了C++中指针和空值表示的多种问题,提高了代码的安全性和可读性。的使用可能会导致模板参数的歧义,因为它们既可以被解释为整数,也可以被解释为指针。),不能隐式转换为整数类型,但可以隐式转换为任何指针类型或布尔类型。的引入使得空指针的表示更加明确,避免了与整数或其他类型的混淆。是一个整数,但它也可以被隐式转换为指针类型。在类型检查上更加严格,避免了潜在的错误。在C++11之前,空指针通常用。是一个宏,通常定义为。的引入解决了这种歧义。
2025-01-20 20:59:33 53
原创 lambda引用捕获与值捕获
在C++中,Lambda表达式是一种匿名函数对象,它可以捕获外部变量(即在Lambda表达式外部定义的变量)以便在Lambda内部使用。引用捕获是指将外部变量的引用捕获到Lambda表达式中。捕获的变量在Lambda表达式中是原始变量的别名,对捕获变量的修改会直接影响外部变量。值捕获是指将外部变量的值复制到Lambda表达式中。捕获的变量在Lambda表达式中是独立的副本,与外部变量无关。它们的区别在于捕获变量的方式和生命周期。:默认按引用捕获所有外部变量。:默认按值捕获所有外部变量。
2025-01-20 20:50:45 55
原创 std::forward实现原理与应用场景
是 C++11 引入的一个函数模板,用于实现完美转发(Perfect Forwarding)。它的核心作用是根据传入的参数,决定将参数以左值引用还是右值引用的方式进行转发,从而保持参数的原始值类别。
2025-01-20 20:39:19 120
原创 const与constexpr的区别
是C++11引入的,用于声明编译时可求值的常量表达式。它的目标是让某些表达式或变量的值在编译时被计算出来,从而提高效率并允许在编译时使用这些值。可以确保这些值在编译时被计算出来,从而完美地适配模板参数的需求。常用于需要在编译时确定的场景,如数组大小、模板参数等。变量通常会占用内存空间,即使它的值是编译时已知的。变量的值可以在运行时确定,也可以是编译时确定的。变量的值在编译时计算,通常不会占用运行时内存。模板参数通常需要在编译时确定的值,而。变量或表达式的值必须在编译时确定。用于修饰变量、函数、模板参数等。
2025-01-20 20:07:32 73
原创 std::move实现原理
std::move是 C++11 引入的一个标准库函数,它的主要作用是将一个对象转换为右值引用(rvalue reference),从而允许资源的转移(move semantics)。std::move是实现移动语义(move semantics)的核心工具之一。
2025-01-20 19:55:22 149
原创 weak_ptr的使用
是 C++ 标准库中提供的一个智能指针,用于解决之间循环引用的问题,从而避免内存泄漏。它提供了一种非拥有的、弱引用的方式指向由管理的对象。
2025-01-08 11:19:39 294
原创 inline关键字
inline关键字是C++中用于指示编译器将函数的调用替换为函数体本身的一种优化手段。其目的是减少函数调用的开销,尤其是在函数体较小的情况下。使用inline关键字时,编译器会尝试将函数的定义直接嵌入到每个函数调用的地方,从而避免函数调用时的参数传递、栈帧创建和返回地址保存等开销。
2025-01-08 10:53:00 99
原创 类的初始化顺序
成员变量按照它们在类定义中声明的顺序进行初始化,而不是按照它们在构造函数初始化列表中的顺序。这意味着即使你在初始化列表中改变了顺序,实际的初始化顺序依然取决于成员变量在类体内声明的顺序。:对于类的静态成员变量,它们是在程序启动时,在任何对象创建之前就被初始化的,并且只初始化一次。静态成员变量的初始化发生在全局初始化阶段,其顺序依赖于它们在文件中的定义位置,而非类定义内的声明顺序。在C++中,类的初始化顺序遵循一定的规则,这些规则确保了程序能够以预期的方式正确初始化对象。,尽管在初始化列表中它们的顺序相反。
2024-12-29 12:12:58 143
原创 RTTI:运行时类型识别
在C++中,RTTI(Run-Time Type Identification,运行时类型识别)是一种机制,它允许程序在运行时获取关于对象类型的信息。RTTI主要用于实现多态性和动态类型转换。和typeid。是用于安全的向下类型转换的运算符。它在运行时检查转换是否有效,如果转换失败,则返回空指针(对于指针类型)或抛出异常(对于引用类型)。,因为它需要运行时类型信息来确定对象的实际类型。
2024-12-29 11:53:23 175
原创 虚函数与纯虚函数
在C++中,虚函数(Virtual Function)和纯虚函数(Pure Virtual Function)是实现多态性的关键特性。它们允许在基类中定义接口,并在派生类中提供具体的实现。
2024-12-29 11:48:34 178
原创 CRTP:奇异递归模板模式
CRTP是C++中的一种模板编程惯用法,全称为Curiously Recurring Template Pattern,即奇异递归模板模式。它是一种特殊的模板技术和使用方式,主要表现为基类是一个模板类,而派生类在继承基类时,将自身作为模板参数传递给基类。
2024-12-29 11:21:14 177
原创 mutable关键字的使用
在C++编程中,const成员函数用于保证对象的恒定性,即在调用const函数时,对象的逻辑状态不会改变。然而,有时候我们需要在const函数中修改某些成员变量,这时mutable关键字就派上了用场。
2024-12-15 22:00:34 189
原创 using关键字的使用
using enum 声明引入命名枚举的枚举符名称,就像对每个枚举符使用using声明一样。当在类范围内时,using enum 声明将命名枚举的枚举符作为成员添加到作用域中,使其可用于成员查找。需要注意的是,如果没有使用using引入重载,那么上述代码将调用两次Derived::func(除非在Derived手动添加了func(double)的重写)。using作为typedef替代品的功能,它允许为现有类型创建更简洁的名字。声明来改变基类成员的可见性。比如,在私有或保护继承的情况下,可以通过。
2024-12-13 11:37:01 262
原创 空基类优化
空基类优化是指编译器在处理继承自空基类的对象布局时,不会为这些空基类分配独立的存储空间。换句话说,如果一个类继承了一个或多个没有数据成员和虚函数的空基类,则编译器会确保派生类不因为这些空基类而增大其自身的大小。这种优化不仅节省了内存,还减少了对象创建和销毁时的开销。
2024-12-11 22:42:25 173
原创 C++中extern的使用
在C++编程语言中,extern关键字用于声明变量和函数,并指示编译器这些实体是在其他地方定义的。正确理解和使用extern可以帮助开发者更好地组织代码,实现模块化编程,并确保不同源文件之间的正确链接。extern。
2024-12-10 23:46:42 390
原创 explicit的用法说明
explicit关键字有两种用途:1.指定构造函数或转换函数 (C++11起)为显式, 即它不能用于隐式转换和复制初始化。2.与常量表达式一同使用. 当该常量表达式为 true 才为显式转换(C++20起)。
2024-12-08 21:53:06 158
原创 FFMpeg音频重采样原始帧与重采样的帧采样数不一致时的一些问题
设置swr_convert的out_count参数项为1024,in_count参数项设置为传入帧的采样数(该采样数与out_count不一致),导致最终保存的文件与正常情况下有出入。
2023-11-27 20:19:28 259 1
原创 RTMP协议抓包分析
RTMP(Real Time Messaging Protocol) 是由 Adobe 公司基于 Flash Player 播放器对应的音视频 flv 封装格式提出的一种,基于TCP 的数据传输协议。RTMP Client和RTMP Server的交互需要经过握手、建立连接、建立流、播放/发布四个步骤。使用wireshake抓取RTMP协议,RTMP的连接过程如上图。其中8.130.x.x为RTMP的服务器所在地址,10.177.x.x为RTMP客户端所在地址。
2023-09-06 15:39:02 621 1
原创 ffmpeg使用麦克风设备出现的问题
ffmpeg使用麦克风Could not find audio only device with name [麦克风 (Steam Streaming Microphone)] among source devices of type video.audio=麦克风 (Steam Streaming Microphone): I/O error
2023-06-06 11:02:55 2646
原创 Go语言分包编程
G语言多包编程出错 go: go.mod file not found in current directory or any parent directory; see 'go help modules'
2022-11-25 16:30:59 1293
原创 高性能服务器框架
两种高效的事件处理模式:Reactor和Proactor。同步I/O常用于实现Reactor模式,异步I/O则用于实现Proactor模式。
2022-11-03 16:09:20 122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人