<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[killers_999的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/killers_999</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; killers_999]]></copyright><item><title><![CDATA[C++进阶学习（三）：std::move的使用]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/114152055</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/114152055</guid><author>killers_999</author><pubDate>Sun, 28 Feb 2021 14:46:07 +0800</pubDate><description><![CDATA[左值、右值、左值引用和右值引用
左值：能被取地址的、有名称的值。
右值：不能被取地址的值，包括临时变量，函数的返回值
int a=2;//a是左值，2是右值
int b=3;//b是左值，3是右值
int c=(a+b);//c是左值，(a+b)是右值

左值引用：
语法：数据类型 &amp; 数据名称=左值；
右值引用（C++11新增特性）：
语法：数据类型&amp;&amp; 数据名称=右值；

左值引用对应左值，右值引用对应右值

	int a = 2;
	int b = 3;
	int&amp; d]]></description><category></category></item><item><title><![CDATA[C++学习进阶（一）：四种cast的用法]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/114135035</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/114135035</guid><author>killers_999</author><pubDate>Fri, 26 Feb 2021 18:17:55 +0800</pubDate><description><![CDATA[upcast:派生类转换为基类
downcast:基类转换为派生类
dynamic_cast
语法：dynamic_cast&lt;待转换类型&gt;(待转换数据）

dynamic_cast在运行时处理
dynamic_cast不能用于内置基本数据类型的强制转换，主要是用于类的指针或者类的引用的转换上
允许upcast,也允许downcast。在进行downcast时，dynamic_cast会进行类型检查。只有强制转换的指针指向的对象实际类型与将要转换后的类型相同时才能转换成功，还要求基类对象必须含有.]]></description><category></category></item><item><title><![CDATA[Linux学习笔记（二）：系统状态检测命令]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/113802021</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/113802021</guid><author>killers_999</author><pubDate>Sun, 14 Feb 2021 21:32:54 +0800</pubDate><description><![CDATA[ifconfig
使用方法：ifconfig 网络设备 参数
功能：查看本机当前的网卡配置与网络状态等信息

ether0：网卡名称
mtu：最大传输单位
inet：IPv4地址
inet6：IPv6地址
ether：MAC地址
RX packets:接收的数据包数，bytes:接收的比特
RX errors:接收的错误的包数，dropped:丢失的包数，overruns:因为速度过快丢失的包数，frame:因为frame错误丢失的包数
TX packets:发送的数据包数，bytes:发送的比特
TX e]]></description><category></category></item><item><title><![CDATA[Linux学习笔记（一）：常见系统工作命令学习]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/113775173</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/113775173</guid><author>killers_999</author><pubDate>Sat, 13 Feb 2021 16:27:08 +0800</pubDate><description><![CDATA[man命令
使用方法：man 参数 命令名称
功能：查看命令的详情页面
# man free的结果：
在description一栏可以看到free 命令显示的total ,used,free的详细意思，在option一栏中可以看到free命令参数，在FILES一栏可以看到free用到的文件是/proc/meminfo


系统工作命令
echo
使用方法：echo 参数 字符串
功能：终端设备上输出字符串或变量提取后的值

参数说明：


-n: 输出字符串后换行



-e: 字符串中可以使用转义字符

]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十九）：模板]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/113327941</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/113327941</guid><author>killers_999</author><pubDate>Sat, 06 Feb 2021 17:16:51 +0800</pubDate><description><![CDATA[模板
为了实现泛式编程
两种模板机制：函数模板和类模板
函数模板
建立一个通用函数，其函数返回值类型和形参类型可以不具体制定，用一个虚拟的类型来代表。
定义一个函数模板：
template&lt;typename T&gt;//函数模板用typename,类模板用class.函数模板和类模板都用class也没错

T sum(T a,T b){
    return a+b;
}

函数模板的调用：
    //1.自动类型推导
    double aa=12.3;
    double bb=12.4;]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十八）：文件操作]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/113040929</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/113040929</guid><author>killers_999</author><pubDate>Thu, 28 Jan 2021 12:43:57 +0800</pubDate><description><![CDATA[文件类型：

文本文件：文件以文本的ASCII码形式存储
二进制文件：文件以文本的二进制形式存储

文件打开方式：




打开方式
功能




ios::in
打开文件用于读取数据。文件不存在则打开出错


ios::out
打开文件用于写入数据。如果文件不存在，则新建该文件，文件原来就存在，则清除原来内容


ios::app
打开文件，用于在其尾部添加数据。如果文件不存在，则新建该文件


ios::ate
打开一个已有的文件，并将文件读指针指向文件末尾。如果文件不存在，则打开出错


ios::t]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十七）：多态]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112751878</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112751878</guid><author>killers_999</author><pubDate>Fri, 22 Jan 2021 19:26:15 +0800</pubDate><description><![CDATA[分类
静态多态：函数重载和运算符重载，编译阶段确定函数地址（地址早绑定）
动态多态：派生类和虚函数实现运行时多态，运行阶段确定函数地址（地址晚绑定）
动态多态
地址早绑定：
class A{
public:
    void test(){
        cout&lt;&lt;"A"&lt;&lt;endl;
    }
};

class aSon:public A{
public:
    void test(){
        cout&lt;&lt;"aSon"&lt;&lt;endl;
  ]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十六）：继承]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112613199</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112613199</guid><author>killers_999</author><pubDate>Sun, 17 Jan 2021 16:44:25 +0800</pubDate><description><![CDATA[继承的好处：减少重复代码
语法：
class 子类（派生类） ：继承方式 父类（基类）
继承方式
三种继承方式：

public 继承（公有继承）
父类中的public权限在子类中是public权限
父类中的protected权限在子类中是protected权限
父类中的private权限在子类中不可访问
protected 继承（保护继承）
父类中的public权限在子类中是protected权限
父类中的protected权限在子类中是protected权限
父类中的private权限在子类中不可访问
]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十五）：运算符重载]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112424877</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112424877</guid><author>killers_999</author><pubDate>Thu, 14 Jan 2021 11:10:54 +0800</pubDate><description><![CDATA[对于已有运算符重新定义其功能
加号运算符重载
通过成员函数重载加号
class Person{
private :
    int salary;
public:
     int age;

    Person(){

    }
    Person(int _age,int _salary){
        age=_age;
        salary=_salary;
    }

    Person operator +(const Person &amp;p){
        Per]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十四）：友元]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112388399</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112388399</guid><author>killers_999</author><pubDate>Sun, 10 Jan 2021 10:08:53 +0800</pubDate><description><![CDATA[友元：让一个函数或者一个类，能够访问另一个类中的私有成员
全局函数做友元
class Person{
    friend void test(Person p);
private :
    int salary;
public:
     int age;

    Person(int _age,int _salary){
        age=_age;
        salary=_salary;
    }
};

void test(Person p){
    cout&lt;&lt;p]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十三）：C++对象模型]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112347507</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112347507</guid><author>killers_999</author><pubDate>Sat, 09 Jan 2021 10:25:16 +0800</pubDate><description><![CDATA[成员变量和成员函数
成员变量和成员函数分开存储
只有非静态的成员变量才时类的对象
静态成员变量、静态成员函数、非静态成员函数在内存中只有一份

空对象所占内存空间为：1字节（主要为了区分不同空对象）
this指针
this 指针隐含在每一个非静态成员函数内的一种指针常量，并且指向被调用的成员函数所属的对象，可直接使用。
作用：

解决名称冲突

class Person{
private:
	int age;
public:
    Person(int age){
        this-&gt;age]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十二）：静态成员]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112347377</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112347377</guid><author>killers_999</author><pubDate>Fri, 08 Jan 2021 10:59:53 +0800</pubDate><description><![CDATA[静态成员
静态成员变量
语法: static 数据类型 数据名；
特点:

所有对象共享一份数据
在编译阶段分配内存（全局区）
类内声明，类外初始化
如果不调用静态成员变量，则不初始化静态成员变量也可以；
如果调用了静态成员变量，则必须类外进行初始化，否则出错。

class Person{
public:
    string name;
    int age;
    static string nation="China";//错误操作，不能类内初始化
}

class Person{
public]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十一）：初始化列表、类成员]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112347226</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112347226</guid><author>killers_999</author><pubDate>Fri, 08 Jan 2021 10:56:44 +0800</pubDate><description><![CDATA[初始化列表
语法：类名（）:成员属性1（值1），成员属性2（值2）…
{函数体}
class Person{

    string name;
    int age;


public:
    Person(string _name,int _age):name(_name),age(_age){
        
    }

};

类作为成员
语法：
class A{
.
.
.
};

class B{
	A a;
.
.
};

注意事项：

在A作为B的成员时，对B进行实例化，先调用A的构]]></description><category></category></item><item><title><![CDATA[C++学习笔记（十）：构造函数和析构函数]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112318384</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112318384</guid><author>killers_999</author><pubDate>Fri, 08 Jan 2021 10:54:24 +0800</pubDate><description><![CDATA[构造函数和析构函数
构造函数：给对象进行初始化，主要为对象的成员属性。
析构函数：清理对象。
必须有构造函数和析构函数,一般控制权限都是public。如果用户不提供，则使用编译器提供的构造函数和析构函数，编译器提供的构造函数和析构函数是空实现（对成员属性什么都不做）。
构造函数和析构函数编译器自动调用
先创建构造函数的实例后调用析构函数
构造函数：
语法：类名( ) { }

没有返回值，也不需要写void
函数名称和类名相同
 构造函数可以有参数，也可以重载
调用对象时自动调用，且只调用一次。

    ]]></description><category></category></item><item><title><![CDATA[C++学习笔记（九）：封装]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112172922</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112172922</guid><author>killers_999</author><pubDate>Thu, 07 Jan 2021 16:21:15 +0800</pubDate><description><![CDATA[c++面向对象的三个特性：封装、继承和多态。
封装
意义：

将属性和行为作为一个整体，表现生活中的整体。
将属性和行为加以权限控制。

属性：用数据描述
行为：用函数描述
权限：

public(公共权限）：类内可以访问，类外也可以访问。
protected(保护权限）：类内可以访问，类外不可以访问。儿子可以访问父亲的保护权限内容。
private(私有权限）：类内可以访问，类外不可以访问。儿子不可以访问父亲的私有权限内容。
成员属性一般是private
意义：

可以自己控制读写权限
读操作：获取成员属]]></description><category></category></item><item><title><![CDATA[C++学习笔记（八）：函数高级]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112172372</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112172372</guid><author>killers_999</author><pubDate>Mon, 04 Jan 2021 13:25:35 +0800</pubDate><description><![CDATA[函数参数默认值
语法：返回值类型  函数名 （形参 = 默认值）{ }
bool cmp(int b,const int a=20){
    return a&lt;b;
}

注意事项：

函数调用时传入数据，则使用传入数据，没有传入数据时使用默认值。
如果某个形参有默认值，其后面所有形参必须有默认值。
函数声明和函数实现，只能有一个有参数默认值。

函数占位参数
语法： 返回值类型  函数名 （形参类型）{  }
int add(int a,int b,int ){//最后一个就是占位参数

}
.
]]></description><category></category></item><item><title><![CDATA[C++学习笔记（七）：引用]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112172347</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112172347</guid><author>killers_999</author><pubDate>Mon, 04 Jan 2021 12:30:11 +0800</pubDate><description><![CDATA[作用：给变量起别名
引用的语法
语法： 数据类型  &amp;别名 = 原名；
int a=10;
int &amp;b = a;
b=20;//此时a=b=20

引用的注意事项

引用必须初始化

int &amp;b = a;//√
int &amp;c;//×，未初始化


引用一旦初始化后就不能更改
引用必须引一块合法的内存空间

int&amp; ref=10;//错误操作

const int&amp; ref=10;
//正确操作，相当于int temp=10;const int &amp;]]></description><category></category></item><item><title><![CDATA[C++学习笔记（六）：程序的内存模型]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112134002</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112134002</guid><author>killers_999</author><pubDate>Sun, 03 Jan 2021 18:33:32 +0800</pubDate><description><![CDATA[程序运行前有代码区和全局区，运行后才有栈区和堆区。
代码区
二进制存放cpu执行的机器指令。
特点：共享（内存中只有一份）、只读
全局区
存放全局变量、静态变量和常量等
常量包括字符串常量和const修饰的常量
const修饰的常量包括const修饰的全局变量和const修饰的局部变量。const修饰的局部变量不放在全局区。
栈区
存放局部变量，形参
 不要返回局部变量的地址。
堆区
程序员分配释放，如果程序员不释放，操作系统将会在程序结束后释放。
new的数据放在堆区。
new
作用：动态申请内存
语法：]]></description><category></category></item><item><title><![CDATA[C++学习笔记（五）：指针]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/112133966</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/112133966</guid><author>killers_999</author><pubDate>Sun, 03 Jan 2021 13:33:56 +0800</pubDate><description><![CDATA[指针可以用于保存一个地址。
指针的定义
语法：数据类型 * 指针变量名 = &amp;变量名
指针的使用
指针前加 * 代表解引用，找到指针指向的内存中的数据
指针所占内存
在32位系统下，无论是什么数据类型，指针所占内存都是4个字节
64位系统下，指针所占内存都是8个字节
空指针
int *p = NULL;//指针变量指向内存中编号为0的空间

空指针不能被访问，因为编号为0的空间被系统占用，用户不能访问。
野指针
指针变量指向非法的内存空间
const修饰指针

常量指针
语法：const 数据类型 ]]></description><category></category></item><item><title><![CDATA[C++学习笔记（四）：函数]]></title><link>https://blog.youkuaiyun.com/killers_999/article/details/111934053</link><guid>https://blog.youkuaiyun.com/killers_999/article/details/111934053</guid><author>killers_999</author><pubDate>Tue, 29 Dec 2020 17:48:59 +0800</pubDate><description><![CDATA[函数定义的语法
返回值类型 函数名 （参数列表）{//函数定义的参数为形参
		函数体语句
		return表达式
}

函数调用的语法
函数名（参数）//函数调用的参数为实参

调用函数时，将实参的值传给形参。
形参的改变不会影响实参。
函数的声明
函数在定义之前先告诉编译器函数的存在。
语法：
返回值类型 函数名（参数列表）;

函数的声明可以多次，函数的定义只能由一次。
函数的分文件编写
在头文件（.h文件）写函数的声明，在源(.cpp)文件写函数的定义。

...]]></description><category></category></item></channel></rss>