随笔分类 - C++
C++管理资源的三五零法则
摘要:C++管理资源的三五零法则 三法则(The rule of three) 三原则指出:如果一个类需要自定义析构函数、拷贝构造函数或拷贝赋值运算符,则需要一并实现这三个。 析构函数(Destructor) 释放类中管理的资源,防止资源泄漏。 形式:~ClassName(); 拷贝构造函数(Copy C
C++轻量级RPC框架的设计与实现
摘要:C++轻量级RPC框架的设计与实现 https://github.com/Meha555/tinyrpc 项目概述 RPC是远程过程调用(Remote Procedure Call)的缩写,可以通过网络从远程服务器上请求服务(调用远端服务器上的函数并获取返回结果)。简单来说,客户端程序可以像调用本地
g++链接报错:undefined reference to typeinfo of xxx
摘要:g++链接报错:undefined reference to typeinfo of xxx 问题背景 在项目中遇到了这样一个问题:C++文件编译都OK,但链接的时候报错:undefined reference to typeinfo for xxx。 std::typeinfo 是C++中的RTT
GLIB入口函数
摘要:GLIB入口函数 关于全局变量引发的内存问题探源 – 采蕨 (joydig.com) main函数并不是程序运行的第一个函数,在main之前,还有初始化函数_init() ; main函数之后还有_fini()函数收尾。 入口函数 操作系统在装载程序之后,首先运行的代码并非 main 函数的第一行,
C++ 返回值类型推导
摘要:C++ 返回值类型推导 前言 C++ 中获取函数签名可以很简单地用 decltype(函数名) 来获得,但是这样无法直接提取出返回值类型。 有时我们需要获取函数或可调用对象的返回值类型,以便进行后续的操作,在泛型编程中很常用,特别是当不同的参数集的结果类型不同时。 头文件 <type_traits>
C++对象析构顺序问题——由QObject::desroyed展开的思考
摘要:C++对象析构顺序问题——由QObject::desroyed展开的思考 C++析构函数执行的顺序是最先执行继承链最末端的子类的,最后执行顶层的基类的。 而 QObject::destroyed(QObject* obj = nullptr) 信号在 Qt 文档中说是“在 obj 被完全析构时之前立
C++获取类型名称的技巧
摘要:C++获取类型名称的技巧 在某些情况下,我们需要明确知道编译器推导出的类型,特别是复杂类型。这些类型信息对于调试、优化和确保代码正确性非常重要。 技巧1:在编译期确定类型 主要用于模板编程和泛型编程时。 在编译期间确定类型的一种方法是通过引发编译错误,查看编译器的错误信息。 示例:如何通过引发编译错