摘要:
g++链接报错:undefined reference to typeinfo of xxx 问题背景 在项目中遇到了这样一个问题:C++文件编译都OK,但链接的时候报错:undefined reference to typeinfo for xxx。 std::typeinfo 是C++中的RTT 阅读全文
摘要:
QPointer、QScopedPointer、QSharedPointer、QWeakPointer QSharedPointer:std::shared_ptr QWeakPointer:std::weak_ptr QScopedPointer:std::unique_ptr QPointer: 阅读全文
摘要:
QT中一些常用的宏 宏 说明 Q_ASSERTQ_ASSERT_X 常用于断言,Release模式下不起作用 Q_ASSUME = Q_ASSERT_X + Q_UNREACHABLE Q_COREAPP_STARTUP_FUNCTION 添加一个全局函数,在QCoreApplication构造时被 阅读全文
摘要:
C++ 返回值类型推导 前言 C++ 中获取函数签名可以很简单地用 decltype(函数名) 来获得,但是这样无法直接提取出返回值类型。 有时我们需要获取函数或可调用对象的返回值类型,以便进行后续的操作,在泛型编程中很常用,特别是当不同的参数集的结果类型不同时。 头文件 <type_traits> 阅读全文
摘要:
C++对象析构顺序问题——由QObject::desroyed展开的思考 C++析构函数执行的顺序是最先执行继承链最末端的子类的,最后执行顶层的基类的。 而 QObject::destroyed(QObject* obj = nullptr) 信号在 Qt 文档中说是“在 obj 被完全析构时之前立 阅读全文
摘要:
C++获取类型名称的技巧 在某些情况下,我们需要明确知道编译器推导出的类型,特别是复杂类型。这些类型信息对于调试、优化和确保代码正确性非常重要。 技巧1:在编译期确定类型 主要用于模板编程和泛型编程时。 在编译期间确定类型的一种方法是通过引发编译错误,查看编译器的错误信息。 示例:如何通过引发编译错 阅读全文
摘要:
C++11 mem_fn成员指针包装器 介绍 函数模板 std::mem_fn 生成成员指针的包装器对象,用于存储、复制及调用成员指针。指向对象的引用和指针(包括智能指针)都可以在调用 std::mem_fn 时使用。 注意: std::mem_fn 只能包装 public 的成员指针,不能包装全局 阅读全文
摘要:
PostgreSQL 部署 安装 sudo apt install postgresql 安装完成后,会自动注册一个 postgres 的用户,用于支持 PostgreSQL 的本机免密登录。 此外,PostgreSQL 的配置文件存储在 /etc/postgresql/15/main 下,其中 1 阅读全文