<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Czyyy_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Czyyy_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Czyyy_]]></copyright><item><title><![CDATA[ROS2-Humble 命令小全]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/126044819</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/126044819</guid><author>Czyyy_</author><pubDate>Fri, 29 Jul 2022 21:11:41 +0800</pubDate><description><![CDATA[内容来自ros2官方wiki的Tutorials部分https仅仅用于自查和学习，有误尽情指正！！]]></description><category></category></item><item><title><![CDATA[【C++】拷贝控制]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/124606832</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/124606832</guid><author>Czyyy_</author><pubDate>Tue, 10 May 2022 11:47:06 +0800</pubDate><description><![CDATA[一个类通过定义五种特殊的成员函数来控制对象的拷贝、移动、赋值和销毁这些操作在做什么。

拷贝构造函数
	拷贝赋值运算符
	移动构造函数
	移动赋值运算符
	析构函数
拷贝构造函数

拷贝构造函数的第一个参数是自身类型的引用，一般会是一个const引用，且任何额外的参数都有默认值；拷贝构造几种情况下都会被隐式使用，因此拷贝构造不应该是explicit，需要进行类型转换。

与合成的默认的构造函数不同，即使定义了拷贝构造函数，编译器也会为我们合成一个拷贝构造函数。一般情况下，合成的拷贝构造函数会将参数的成员逐个]]></description><category></category></item><item><title><![CDATA[【C++】动态内存与智能指针]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/124574773</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/124574773</guid><author>Czyyy_</author><pubDate>Fri, 06 May 2022 11:26:25 +0800</pubDate><description><![CDATA[C++中 内存划分：

静态内存：保存局部static对象、类static数据成员、以及定义在任何函数之外的变量；
	栈内存：保存定义在函数内的非static对象；
	自由空间（堆）：存储动态分配的对象，当动态对象不再使用时，需要显示的销毁；
智能指针

智能指针的行为类似于常规指针，负责自动释放所指向的对象；

智能指针模板类：定义在memory头文件中

shared_ptr：允许多个指针指向同一个对象；
	unique_ptr：独占所指的对象；
	weak_ptr：是一种弱引用，指向shared_pt]]></description><category></category></item><item><title><![CDATA[【C++】类型转换]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/124573691</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/124573691</guid><author>Czyyy_</author><pubDate>Wed, 04 May 2022 17:32:19 +0800</pubDate><description><![CDATA[隐式转换

某些数据类型之间是有关联的，那么程序需要其中一种类型运算对象时，就可以用另一种关联类型的对象或值来代替，即这两种数据类型直接是可以相互转换的；


int ival = 3.541 + 3;    //编译器可能警告该运算损失了精度

上述的代码中，就会发生从 float 向 int 的转换，称作为隐式转换；


什么时候会发生隐式转换：

大多数表达式中，比int类型小的整形值首先提升为较大的整数类型；
	在条件中，非布尔值转换为布尔类型；
	初始化过程中，初始值转变成变量的类型；赋值语句中，]]></description><category></category></item><item><title><![CDATA[【C++】lambda表达式]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/124570658</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/124570658</guid><author>Czyyy_</author><pubDate>Wed, 04 May 2022 16:50:16 +0800</pubDate><description><![CDATA[介绍lambda

可调用的对象：函数、函数指针、重载了函数调用运算符的类 以及 lambda表达式；

形式：[capture list] (parameter list) -&gt; return type { function body }

lambda必须使用尾置返回，且不能有默认参数，一个lambda调用的实参数目永远与形参数目相等；


如果lambda的函数体包含任何单一 return 语句之外的内容，且未指定返回类型，则返回void。

一个lambda只有在其捕获列表中捕获一个它所在函数]]></description><category></category></item><item><title><![CDATA[【C++】函数指针]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/124570161</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/124570161</guid><author>Czyyy_</author><pubDate>Wed, 04 May 2022 14:30:05 +0800</pubDate><description><![CDATA[//比较两个string的长度
bool lengthCompare(const string &amp;, const string &amp;);

//声明一个指向该函数的指针
bool (*pf)(const string &amp;, const string &amp;);


*pf 旁边的括号不能省略，如果不写这对括号那么pf是一个返回值为bool指针的函数。



使用函数指针

当我们把函数名当作一个值来使用时，该函数自动转换为指针，类似于使用内置数组时会自动转换为指针；


pf =.]]></description><category></category></item><item><title><![CDATA[【C++】this 和 常量成员函数]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/124565607</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/124565607</guid><author>Czyyy_</author><pubDate>Wed, 04 May 2022 09:35:39 +0800</pubDate><description><![CDATA[引入this

假设有一个 Sale_data 类，有成员函数isbn()，total是它的实例对象；

成员函数通过一个名为this的额外隐式参数来访问调用它的那个对象，当我们调用一个成员函数时，用请求该函数的对象地址初始化this；


total.isbn();

//可以等价的认为编译器重写为以下形式：（伪代码）
Sale_data::isbn(&amp;total);



在成员函数内部，可以直接调用该函数的对象成员，而无需通过成员访问运算符（-&gt;），因为this指向的正是这个对象。任何对]]></description><category></category></item><item><title><![CDATA[【C++】const限定符]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/124549067</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/124549067</guid><author>Czyyy_</author><pubDate>Wed, 04 May 2022 00:46:08 +0800</pubDate><description><![CDATA[初始化和const

const对象一旦创建就不能再改变，所以必须初始化；

编译器将在编译过程中把用到该变量的地方都替换成对应的值，例如下面的代码编译器会找到所有用到了bufSize的地方用512替换；


const int bufSize = 512;

初始化常量引用时允许用任意表达式作为初始值，只要该表达式的结果可以转换为引用的类型即可；


double dval = 3.14;
const int &amp;ri = dval;

//实际上执行的是有一个临时变量的存在, 所谓临时量就是当编译]]></description><category></category></item><item><title><![CDATA[【numpy】获取数组满足条件的部分]]></title><link>https://blog.youkuaiyun.com/Czyyy_/article/details/124548227</link><guid>https://blog.youkuaiyun.com/Czyyy_/article/details/124548227</guid><author>Czyyy_</author><pubDate>Mon, 02 May 2022 22:54:45 +0800</pubDate><description><![CDATA[数组过滤

当使用布尔数组作为下标存取数组中的元素时，将收集数组中所有在数组中对应下标为True的元素，复制创建一个新数组。使用布尔数组作为下标获得的数组不和原始数组共享数据空间，这种方式只对应于布尔数组(array)，不能使用布尔列表（list）。


arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[arr % 2 == 1] = -1
print(arr)

#输出：
# &gt; array([ 0, -1,  2, -1,  4, -1,  6,]]></description><category></category></item></channel></rss>