随笔分类 - C++代码块
摘要:不安全函数(Unsafe Functions)通常指那些在特定条件下可能导致程序错误、数据损坏或安全漏洞的函数。在编程中,不安全函数可能表现为以下几种情况: 缓冲区溢出:当函数在处理数据时没有检查输入的大小,可能导致超出预分配内存空间的写入,造成数据破坏或程序崩溃。例如,在C和C++中,strcpy
阅读全文
摘要:静态函数(static function)是一种特殊类型的函数,它可以存在于类或者在文件级别,具有不同的作用和特性。静态函数通过 static 关键字进行声明,具体分为 类中的静态成员函数 和 文件级别的静态函数,它们在不同的上下文中发挥不同的作用。 1. 类中的静态成员函数 在类中,静态成员函数是
阅读全文
摘要:C++ 中的 函数重载(Function Overloading)是一种多态性特性,允许在同一作用域内定义 多个同名函数,只要这些函数的参数列表不同(参数的类型、数量或顺序不同)。编译器根据函数调用时传递的参数类型和数量来决定调用哪个函数。 1. 函数重载的规则 C++ 编译器通过以下规则来区分重载
阅读全文
摘要:在 int main(int argc, char* argv[]) 中,argc 和 argv 是主函数 main 的参数,用于处理命令行输入参数。它们允许程序从命令行接收额外的输入值,常用于控制程序的执行行为或传递信息。 参数解释 argc(argument count):表示从命令行传递给程序
阅读全文
摘要:static int 是 C 和 C++ 中的一种声明方式,用于定义具有静态存储持续时间的整数变量。static 关键字在不同上下文中有不同的含义,但通常它用于控制变量的生存期和可见性。下面详细解释 static int 的含义和用途。 1. 静态存储持续时间 生存期:当变量被声明为 static
阅读全文
摘要:const char* 是 C 和 C++ 中的一种类型声明,表示一个指向常量字符的指针。具体来说,const 关键字用于修饰指针指向的数据,使得数据本身不可修改。以下是 const char* 的详细解释: 1. 指针和常量 指针(Pointer):指针是一个变量,用于存储内存地址。char* 表
阅读全文
摘要:在 C++ 中,传指针和传引用都是将变量传递给函数的两种方式,但它们在语法、行为和使用场景上有一些区别。理解它们的区别和各自的适用场景是编写高效和安全代码的重要组成部分。 1. 传指针(Pass by Pointer) 指针是一种变量,它存储另一个变量的内存地址。在函数参数中使用指针,意味着将实参的
阅读全文
摘要:unsigned 是一种修饰符,用来表示无符号的整数类型。无符号类型只能存储非负数,因此与有符号类型相比,它能够表示更大的正整数范围。 使用 unsigned 的常见场景 在表示只有非负数的场景中,如计数器、索引、内存地址等。 提高正整数的表示范围,比如当需要存储比有符号类型更大的正数时。 对比不同
阅读全文
摘要:C++ 中的数据类型分为四大类:基本数据类型、派生数据类型、用户定义的数据类型和空类型。每类都有特定的用途和特性。 1. 基本数据类型(Built-in Data Types) 这是 C++ 中最基本的数据类型,包含整数、浮点数、字符和布尔类型。 整数类型(Integer Types): int:标
阅读全文
摘要:在 Windows 上下载并编译 OpenCV,然后配置系统环境变量的步骤如下: 1. 下载 OpenCV 打开 OpenCV 官方下载页面。 找到最新的 Windows 版本,点击下载,例如:opencv-4.x.x-vc14_vc15.exe,这将是一个自解压文件。 下载完成后,双击 openc
阅读全文
摘要:在Visual Studio中,编译(Compile)、Build以及生成解决方案(Build Solution)是软件开发过程中的重要环节,它们各自承担着不同的任务,但又相互关联。以下是这三者的区别和联系: 一、编译(Compile) 编译是将源代码转换为机器可读代码的过程。具体来说,编译程序会分
阅读全文
摘要:解决办法:更改项目字符集 在 Visual Studio 中,你可以更改项目的字符集设置,以确保所有字符串字面量都被视为宽字符或窄字符。这可以在项目属性中的“配置属性”->“高级”->“字符集”下设置。将其设置为“未设置”会使所有字符串字面量默认为宽字符。
阅读全文
摘要:“原生支持C++”指的是一个开发工具(如IDE、操作系统、库等)直接且全面地支持C++编程语言,无需额外的配置或外部插件。这意味着开发工具能够原生处理C++代码的编写、编译、调试、运行等工作,通常包括以下几个方面: 编译器支持: 工具自带或能够直接集成C++编译器(如Microsoft Visual
阅读全文
摘要:GCC(GNU Compiler Collection)是一个编译器集合,包括了多种编程语言的编译器,如 C、C++、Objective-C、Fortran 等。而 g++ 是 GCC 的 C++ 编译器的前端程序,专门用于编译 C++ 代码。 以下是它们之间的一些区别: 语法支持: GCC 可以编
阅读全文
摘要:前几天聊天的时候,有人疑问无法实现这种转换,因为原先实践过的缘故,就把解决方案写下 int Detect::dataProcess(unsigned char *img_ptr, int h, int w){ img = cv::Mat(h, w, CV_8UC3, img_ptr); cuda::
阅读全文
摘要:cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local/ -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.1.1/modules -DWITH_CUDA=ON -DCUDA_
阅读全文
摘要:最近有个需求:拍摄证件或纸质文件上传时,需要自动将拍摄背景去除,只保留证件或文件那部分的图像。 先来一张效果图 首先使用opencv提供的CvVideoCamera类来加载视频流 实现CvVideoCameraDelegate的方法: - (void)processImage:(Mat &)mat;
阅读全文