msvc的奇葩错误 error C2001:常量中有换行符错误 std::string msg = "读取或者写入"; 正确 std::string msg = "读取或者写入."; 该错误的原因很显然是文件编码的问题,在网上搜索了一下,找到了如下解决办法: 全部用英文编码,不要用中文 偶数中文 或 结尾加英文的符号,如”.” 将文件编码进行一个手动(如记事本)转换,改成U 2021-06-28
boost安装 源码https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/ 生成编译工具点击bootstrap.bat即可生成b2.exe编译工具。 如需 gcc 编译,修改project-config.jam,将using msvc ;,改为using gcc ; 编译msvc(默认)b2 -j8 stage --build-dir=. 2021-06-28
C++ 类定义中class+宏+类名的意义 看zoom的win_sdk时,看到很多类在定义时,class和类名中间有一个DUILIB_API,形如: class DUILIB_API CWindowWnd 好奇之后查资料,发现DUILIB_API被展开为: #ifdef UILIB_STATIC # define DUILIB_API #else # if defined(UILIB_EXPORTS) # if defined(_M 2021-06-25 C&C++ C++ c++
C++ explicit和implicit 一、类类型转换首先,明确什么是类类型转换, 内置类型存在定义了几种自动转换的规则,同样地,类也有定义隐式的转换规则。 若构造函数没有声明explicit且只接受一个实参,则它可以进行隐式的类类型转换。(如何将一种类类型转换为另一种类类型的转换规则) 类的构造函数默认是implicit的,可以进行隐式类类型转换的, explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函 2021-06-25 C&C++ C++ c++
C++11 新特性 智能指针详解 C++ 程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。但使用普通指针,容易造成内存泄露(忘记释放)、二次释放、程序发生异常时内存泄露等问题等。所有 C++11 就引入了智能指针。 一、原始指针容易发生内存泄漏C 语言中最常使用的是malloc()函数分配内存,free()函数释放内存,而 C++ 中对应的是new、delete关键字。malloc()只是分配了内存,而 2021-06-25 C&C++ C++ c++ 指针
C++ 11 智能指针shared_ptr shared_ptr 的类型是C + +标准库中一个聪明的指针,是为多个拥有者管理内存中对象的生命周期而设计的。在你初始化一个 shared_ptr 后,你可以复制它,把函数参数的值递给它,并把它分配给其它 shared_ptr 实例。所有实例指向同一个对象,并共享访问一个“控制块”,即每当一个新的shared_ptr 被添加时,递增和递减引用计数,超出范围,则复位。当引用计数到达零时,控制块删除 2021-06-25 C&C++ C++ c++ 指针
C++ 11 智能指针weak_ptr 1、为什么需要weak_ptr?在正式介绍weak_ptr之前,我们先来回忆一下shared_ptr的一些知识。我们知道shared_ptr是采用引用计数的智能指针,多个shared_ptr实例可以指向同一个动态对象,并维护了一个共享的引用计数器。对于引用计数法实现的计数,总是避免不了循环引用(或环形引用) 的问题,shared_ptr也不例外。 我们先来看看下面这个例子: #include &l 2021-06-25 C&C++ C++ c++ 指针
c++ new和malloc的区别 new和malloc的区别是C/C++一道经典的面试题,我也遇到过几次,回答的都不是很好,今天特意整理了一下。 0. 属性new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。 1. 参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。 2. 返回类型new操作符内存分配成 2021-06-25 C&C++ c++ 内存管理
C++ 11 智能指针unique_ptr 简介unique_ptr 是 C++ 11 提供的用于防止内存泄漏的智能指针中的一种实现,独享被管理对象指针所有权的智能指针。unique_ptr对象包装一个原始指针,并负责其生命周期。当该对象被销毁时,会在其析构函数中删除关联的原始指针。unique_ptr具有->和*运算符重载符,因此它可以像普通指针一样使用。查看下面的示例: #include #include struct Ta 2021-06-25 C&C++ C++ c++ 指针