为什么要使用 std::enable_shared_from_this,以及使用场景
为什么要使用 std::enable_shared_from_this 当使用原始指针构造或者初始化一个shared_ptr时,将会创建一个新的控制块。为了确保一个对象仅由一个共享的控制块管理,必须通过复制已存在的shared_ptr对象来创建一个新的shared_ptr实例。 但是在某些情况下,shared_ptr管理的对象需要为自己获取shared_...
为什么要使用 std::enable_shared_from_this 当使用原始指针构造或者初始化一个shared_ptr时,将会创建一个新的控制块。为了确保一个对象仅由一个共享的控制块管理,必须通过复制已存在的shared_ptr对象来创建一个新的shared_ptr实例。 但是在某些情况下,shared_ptr管理的对象需要为自己获取shared_...
1. 线程安全 根据cppreference的描述,std::shared_ptr线程安全如下(机器翻译): 如果是每个线程都拥有自己的std::shared_ptr对象,则针对线程自己的std::shared_ptr对象,其所有成员函数都是线程安全的; 如果多个线程共享同一个std::shared_ptr对象,其const成员函数的访问是线程安全的,但其非const成员函数的...
linux-insides 中文翻译 system-design-primer 参考 万字详解 GoF 23 种设计模式(多图、思维导图、模式对比),让你一文全面理解 Design Patterns In Modern C++ 中文版翻译 -第24章:访问者模式
1. trival copyable trival copyable 是指内存布局可以使用 memcpy 进行内存拷贝的类型,但不定义与C类型兼容。 C++11 要求如下: 构造函数,复制构造函数,移动构造函数(move ctor),析构函数,均为默认。 赋值运算符,移动赋值运算符,均为默认。 没有虚函数和虚基类。 1.1 说明 默认的构造等函数,包含可以使用...
创建自定义目标 add_custom_target(TargetCopy3rdPartyLibs ALL COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" COMMAND cp_3rd_libs.bat "${PROJECT_SOURCE_DIR}/3rd_libs"...
1. OPENCASCADE 中的拓扑结构(TopoDS包) 抽象结构是以TopoDS包的C++类来实现的。下面是一个继承图,取自Doxygen生成的文档。 TopoDS_Shape 是通过值来操作的,包含3个字段–location、orientation 和一个 myTShape 句柄 (TopoDS_TShape类型),见下图(只包含最重要的字段): myTShape 和 ...
1. PowerShell 清屏快捷键设置 由于 VSCode Windows 开发使用 cls 命令不能执行清屏操作(仅仅是滚动SCREEN缓冲区),所以使用快捷键代替清屏操作。 VSCode 中,Ctrl + Shift + p 打开设置,搜索 Terminal: Clear,找到 Terminal: Clear,将快捷键设置为 Ctrl + l。 PowerShell alias ...
准备 配置 VSCode 使用 PowerShell7 VSCode快捷键打开用户配置文件(Json):ctrl+shift+p,输入open user settings,选择打开settings.json文件。添加以下内容: "terminal.integrated.profiles.windows": { "PowerShell": { "source": ...
1. 控件的 eventFilter 如下代码,将为edtCleanCount部件安装一个事件过滤器,当用户按下Up或Down键时,并且参数obj为edtCleanCount时,会自动修改edtCleanCount的值。 也可以继承QLineEdit类,重写keyPressEvent方法,实现相同的功能。 // eventFilter 声明 // bool eventFilter(QOb...
1. 加载多个DSO中存在同名符号 APP加载的多个DSO,如果存在重复的符号,则只加载第一个遇到的符号。规则适合于包括函数,全局变量。 加载顺序,由链接顺序,以及环境变量定义lib路径优先级,如RPATH,LD_LIBRARY_PATH。路径搜索优先级为:RPATH > LD_LIBRARY_PATH > ld.so.cache。 1.1. RPATH 编译期间,设定R...