
C++
qingtu01
这个作者很懒,什么都没留下…
展开
-
tinyxml库myDoc->LoadFile()报错可能原因以及3种解决方案
tinyxml库myDoc->LoadFile()报错可能原因以及3种解决方案原创 2022-07-14 22:09:19 · 2712 阅读 · 2 评论 -
vscode make : 无法将“make”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
最近windows下想用makefile,结果执行make命令时出现下面问题,无法识别make命令。(前提:我的gcc环境是正常的)问题现象:系统找不到make命令,但是在powershell下我的其他linux命令比如ls等都是可用的解决方案:找到mingw64安装目录,把里面的mingw32-make.exe改成make.exe即可或者直接在vscode里输入mingw32-make可以实现同样效果,就是每次都输入这么长有点麻烦...原创 2022-04-10 10:29:16 · 18945 阅读 · 4 评论 -
string.length()返回值与负值比较的坑
string.length()返回值隐蔽的坑string.length()返回值为size_t ,是一个unsigned integral type,而当我们用string.length()与int进行大小比较时,int值会被隐式转成unsigned integral!!在用负的int与string.length()进行比较时就会出错#include <iostream>#include <string>#include <typeinfo> #include原创 2021-09-01 11:30:16 · 1614 阅读 · 1 评论 -
C++空指针调用类成员函数
C++空指针可以调用类成员函数,但是【不能调用】类中的【虚函数】我们知道,一个对象的指针可以调用它的成员函数和虚函数,那么如果一个指向空nullptr的指针,能不能调用它的成员函数和虚函数。#include<iostream>using namespace std;class A{public: void func1() { //_a = 1; } virtual void func2() { }private: int _a = 10 ;};in转载 2021-07-21 21:27:29 · 2043 阅读 · 0 评论 -
c++11 std::move() 的使用
c++11 std::move() 的使用std::move函数可以以非常简单的方式将左值引用转换为右值引用。(左值、左值引用、右值、右值引用 参见:http://www.cnblogs.com/SZxiaochun/p/8017475.html)通过std::move,可以避免不必要的拷贝操作。std::move是为性能而生。std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。如string类在赋值或者拷贝构造函数中会声明char数组来存放转载 2021-06-26 11:37:30 · 77 阅读 · 0 评论 -
return *this和return this区别
别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。 正确答案为:return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:#include <iostream>using namespace std; class A{public: int x;.转载 2021-06-10 16:56:08 · 601 阅读 · 0 评论 -
vector_swap()回收内存方法
vector::swap()回收内存方法最近写代码遇到了一段代码,简化如下:typedef vector<int> myVector;myVector t{1,2,3,4,4};myVector().swap(t); //这行当时没看懂产生了以下几个疑问:为什么用一个空vector去与t交换?交换之后t是不是变成空?为什么不直接用vector::clear()?通过上网查找,发现这是一种内存回收方法,因为vector::clear()只是把容器内容删除,但是空间并没有释放原创 2021-04-22 15:09:31 · 720 阅读 · 0 评论 -
typedef的用法
typedef的用法第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,// 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,转载 2021-04-21 17:51:26 · 6833 阅读 · 1 评论