<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[己亥谷雨]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cd_yourheart</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cd_yourheart]]></copyright><item><title><![CDATA[OCR：RapidOCR C++/C#]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/163314167</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/163314167</guid><author>cd_yourheart</author><pubDate>Wed, 29 Jul 2026 23:51:14 +0800</pubDate><description><![CDATA[onnxruntime官方仓库和opencv官方仓库提供的全都是md的，或者全网其它任何可以下载到的库，默认都是md的。2、这个是关键：看windows-x64或windows-x86里面的include目录结构，如果没有子目录，那么。如果是选mt，则onnxruntime和opencv都必须同时使用mt的，如果不一致会出错。相关的选项：引用库类型: 1)静态CRT(mt), 2)动态CRT(md)我最初是使用1.26.0版本，导出为dll，C#直接调用，是可以的。1、所有dll使用相同VS版本导出。]]></description><category></category></item><item><title><![CDATA[C++/OpenCV：Mat初始化赋值误区]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/146181308</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/146181308</guid><author>cd_yourheart</author><pubDate>Tue, 11 Mar 2025 16:00:22 +0800</pubDate><description><![CDATA[一直以为下面这样会将每个通道均初始化为1，导致一个bug调了半天根本没有怀疑过这里。连deepseek和chatgpt也这样说，实际上只会对一个通道初始化。]]></description><category></category></item><item><title><![CDATA[C++：定义函数指针类型]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/144110041</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/144110041</guid><author>cd_yourheart</author><pubDate>Thu, 28 Nov 2024 14:13:50 +0800</pubDate><description><![CDATA[在 C++ 中，可以使用using或typedef来定义函数指针类型。对于类型的函数指针，可以通过using来定义一个别名，使代码更简洁和易于理解。]]></description><category></category></item><item><title><![CDATA[C++：使用CRTP代替虚函数实现静态多态的效果]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/144060915</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/144060915</guid><author>cd_yourheart</author><pubDate>Tue, 26 Nov 2024 15:49:39 +0800</pubDate><description><![CDATA[它是一种通过模板实现静态多态的方法。在这个模式中，基类使用其派生类作为模板参数，从而实现类似虚函数的行为，但没有动态多态的开销。]]></description><category></category></item><item><title><![CDATA[C++：final 关键字用于阻止类被继承或阻止虚函数被进一步重写]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/144059526</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/144059526</guid><author>cd_yourheart</author><pubDate>Tue, 26 Nov 2024 15:06:58 +0800</pubDate><description><![CDATA[可以增强代码的可维护性和安全性，是设计意图清晰表达的重要工具。关键字，用于阻止类被继承或阻止虚函数被进一步重写。时，派生类中试图重写该虚函数会导致编译错误。时，尝试继承该类会导致编译错误。]]></description><category></category></item><item><title><![CDATA[C++：对象切片原理解析、示例与最佳实践]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/144057880</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/144057880</guid><author>cd_yourheart</author><pubDate>Tue, 26 Nov 2024 14:15:05 +0800</pubDate><description><![CDATA[对象切片（Object Slicing）是 C++ 中的一种行为，发生在基类和派生类之间的赋值或传递操作中。当派生类对象赋值或传递给基类对象时，派生类的特有部分会被“切掉”，只保留基类的成员数据。这是因为基类只能容纳基类定义的成员，而派生类的扩展部分超出了基类的内存范围。通过这些策略，可以有效避免对象切片问题，确保程序正确性和可维护性。或私有化拷贝构造函数和赋值运算符，避免基类对象拷贝。通过指针或引用传递对象，确保完整的对象保持有效。管理基类指针，减少直接操作。]]></description><category></category></item><item><title><![CDATA[C++：不推荐在构造函数和析构函数中调用虚函数]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/144052786</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/144052786</guid><author>cd_yourheart</author><pubDate>Tue, 26 Nov 2024 10:35:38 +0800</pubDate><description><![CDATA[在构造函数和析构函数中调用虚函数会导致动态绑定失效。这是由于对象的构造和析构过程中，虚表指针 (vptr) 尚未设置或已重置。为避免问题，推荐推迟虚函数的调用，或使用非虚函数替代设计。]]></description><category></category></item><item><title><![CDATA[C++：当vector中存储的是自定义类型对象时注意事项]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/144030283</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/144030283</guid><author>cd_yourheart</author><pubDate>Mon, 25 Nov 2024 16:14:06 +0800</pubDate><description><![CDATA[看一段代码，相关：构造函数、拷贝/移动构造函数、vector扩容、智能指针。]]></description><category></category></item><item><title><![CDATA[C++：设计模式-单例模式]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143975606</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143975606</guid><author>cd_yourheart</author><pubDate>Fri, 22 Nov 2024 15:44:44 +0800</pubDate><description><![CDATA[通过方法获取单例实例，这是调用饿汉式单例的标准方式。由于饿汉式实例在程序启动时就被创建，所以你不需要显式地进行实例化操作。饿汉式：简单，适合不需要延迟初始化的场景，程序启动时就创建实例。懒汉式：适合需要延迟初始化的场景，但需要考虑线程安全。线程安全懒汉式：通过加锁保证线程安全，但可能带来性能开销。双重检查锁：线程安全，减少了加锁的频率，但实现复杂。静态局部变量：线程安全，简洁，现代 C++ 中推荐的单例实现方式。在现代 C++ 中，静态局部变量。]]></description><category></category></item><item><title><![CDATA[C++：向std::function注册回调函数]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143973100</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143973100</guid><author>cd_yourheart</author><pubDate>Fri, 22 Nov 2024 14:19:36 +0800</pubDate><description><![CDATA[普通函数可以直接传递给，因为它的签名与匹配。函数指针也可以传递给，需要使用函数指针的类型。成员函数需要额外处理，因为成员函数是与对象实例相关的，通常通过 lambda 捕获对象实例来注册成员函数。这些方式都可以将一个函数注册到回调中，具体选择哪种方式取决于你的需求（例如是否需要成员函数或者函数指针）。你不能直接将成员函数传递给，因为成员函数需要一个对象实例来调用。可以使用std::bind或 lambda 表达式来绑定成员函数和对象实例，从而解决这个问题。]]></description><category></category></item><item><title><![CDATA[C++：operator new/delete函数]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143945695</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143945695</guid><author>cd_yourheart</author><pubDate>Thu, 21 Nov 2024 14:51:49 +0800</pubDate><description><![CDATA[它们是由标准库提供的，可以用于动态内存分配和释放。如果一个类没有显式定义自己的。除了类的自定义版本，可以重载全局范围的。默认情况下，所有类都使用全局范围的。，默认的全局版本会被使用。，从而覆盖默认行为。]]></description><category></category></item><item><title><![CDATA[C++：友元函数介绍]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143934027</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143934027</guid><author>cd_yourheart</author><pubDate>Thu, 21 Nov 2024 10:17:52 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/cd_yourheart/article/details/118962490[上一篇]友元函数是 C++ 中的一种特殊函数，它可以访问类的私有成员和保护成员，而不需要是该类的成员函数。友元机制允许在不破坏封装的情况下为类提供额外的功能。访问权限：定义方式：作用域：不受继承影响：
输出：


友元函数的优缺点
优点：

灵活性：可以为非成员函数提供访问类私有成员的能力，增加代码的灵活性。
扩展性：可以将与类紧密相关的功能封装到独立的函数中，而不强制将其作为类的成员。]]></description><category></category></item><item><title><![CDATA[C++：实例访问静态成员函数和类访问静态成员函数有什么区别]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143933325</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143933325</guid><author>cd_yourheart</author><pubDate>Thu, 21 Nov 2024 09:55:33 +0800</pubDate><description><![CDATA[在 C++ 中，通过和通过在功能上没有本质区别，因为静态成员函数属于类，而不属于某个具体的实例。无论通过类名还是实例调用，静态成员函数的行为都是相同的。但是，它们之间有以下几点thisthis。]]></description><category></category></item><item><title><![CDATA[C++：关于静态变量]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143922868</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143922868</guid><author>cd_yourheart</author><pubDate>Wed, 20 Nov 2024 19:03:56 +0800</pubDate><description><![CDATA[无论是静态局部变量还是静态全局变量，初始化都只会执行一次，这也是static的一个核心特性。]]></description><category></category></item><item><title><![CDATA[C++：捕获 shared_from_this()和捕获this的区别]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143918726</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143918726</guid><author>cd_yourheart</author><pubDate>Wed, 20 Nov 2024 16:39:09 +0800</pubDate><description><![CDATA[如果对象生命周期由管理，建议使用 shared_from_this()，因为它可以确保对象在回调中存活。如果对象生命周期完全受控，且明确保证事件回调执行时对象一定存活，可以选择效率更高的捕获this。]]></description><category></category></item><item><title><![CDATA[C++：shared_from_this()应用在异步任务中的应用]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143914569</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143914569</guid><author>cd_yourheart</author><pubDate>Wed, 20 Nov 2024 15:30:07 +0800</pubDate><description><![CDATA[的主要用途是安全地创建实例来管理当前对象的生命周期，确保对象在异步任务或新线程中不会在使用过程中被销毁。]]></description><category></category></item><item><title><![CDATA[C++：boost库安装]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143833778</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143833778</guid><author>cd_yourheart</author><pubDate>Sun, 17 Nov 2024 16:13:46 +0800</pubDate><description><![CDATA[当你需要快速开发高质量的 C++ 项目时，Boost 提供了大量经过验证的、易于使用的解决方案。对于那些需要现代 C++ 特性和跨平台支持的项目，Boost 是一个强大的选择。在需要快速实验和实现复杂功能时，Boost 提供的工具和功能能让你专注于实现业务逻辑，而非底层细节。总之，Boost 是一个功能强大、灵活且稳定的工具库，可以显著提升 C++ 项目的开发效率和代码质量。]]></description><category></category></item><item><title><![CDATA[python安装包报错]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143769457</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143769457</guid><author>cd_yourheart</author><pubDate>Thu, 14 Nov 2024 14:01:05 +0800</pubDate><description><![CDATA[后来想了想ssl怎么有问题，突然想到开了梯子，把梯子关了就正常了。想不明白，就直接下载了whl，Windows安装whl。如果你的 Python 安装是通过。： 假设你下载的文件名是。]]></description><category></category></item><item><title><![CDATA[Dependencies 工具]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143690437</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143690437</guid><author>cd_yourheart</author><pubDate>Mon, 11 Nov 2024 17:12:49 +0800</pubDate><description><![CDATA[Dependencies` 是一个实用的工具，用于分析 Windows PE 文件（例如 `.exe`、`.dll`、`.sys` 等）中依赖的库和函数。- 与旧版 `Dependency Walker` 不同，`Dependencies` 支持 Windows 10 及以上系统的现代特性，比如对应用程序清单文件、延迟加载 `DLL` 的支持等。### 8. **处理 `x86`、`x64` 和 `ARM` 架构的文件**### 3. **检查 `DLL` 版本和路径**]]></description><category></category></item><item><title><![CDATA[QT5升级到QT6后遇到的问题]]></title><link>https://blog.youkuaiyun.com/cd_yourheart/article/details/143106938</link><guid>https://blog.youkuaiyun.com/cd_yourheart/article/details/143106938</guid><author>cd_yourheart</author><pubDate>Mon, 21 Oct 2024 11:01:10 +0800</pubDate><description><![CDATA[有挺多更新的内容，比如鼠标事件之类的，头文件包含之类的，都比较好解决。但是遇到下面这个问题搞半天。]]></description><category></category></item></channel></rss>