<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Evan_work的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Evan_work</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Evan_work]]></copyright><item><title><![CDATA[linux学习整理_中断操作原理]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/128303844</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/128303844</guid><author>Evan_work</author><pubDate>Tue, 13 Dec 2022 16:36:51 +0800</pubDate><description><![CDATA[中断操作原理]]></description><category></category></item><item><title><![CDATA[shell脚本]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105646301</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105646301</guid><author>Evan_work</author><pubDate>Mon, 20 Apr 2020 22:48:57 +0800</pubDate><description><![CDATA[目录1、shell的概述2、脚本的分类3、shell语法初始4、变量5、预设变量6、变量的扩展7、条件测试8、控制语句9、函数
1、shell的概述
脚本：本质就是一个文件，文件里面存放的事 特定格式的指令， 系统可以使用脚本解析器  翻译或解析 指令 并执行（他不需要编译）
shell 应用层序   脚本语言（应用程序  解析 脚本语言）
shell命令解析器：
系统提供 shell命令解析器：...]]></description><category></category></item><item><title><![CDATA[QT的信号和槽机制]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105301040</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105301040</guid><author>Evan_work</author><pubDate>Fri, 03 Apr 2020 21:07:24 +0800</pubDate><description><![CDATA[概述

案例：单击button 关闭主窗口
widget.cpp
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //设置窗口标题
    this-&gt;setWindowTitle("信号");
    //设置窗口大小
    this-&gt;resize(800,600);
    //创建一个按钮
    QPu...]]></description><category></category></item><item><title><![CDATA[C++的函数适配器]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105280776</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105280776</guid><author>Evan_work</author><pubDate>Thu, 02 Apr 2020 22:25:20 +0800</pubDate><description><![CDATA[目录绑定参数取反适配器成员函数适配器mem_fun_ref普通函数作为适配器 ptr_fun
扩展函数的参数接口（假如函数有一个参数  再扩展一个接口  据可以传递两个参数）
绑定参数
bind2nd 和bind1st区别
bind2nd：将外界数据 绑定到第二个参数
bind1st：将外界数据 绑定到第一个参数
注意：
binary_function 二元继承
unary_function 一元...]]></description><category></category></item><item><title><![CDATA[C++必备常识]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105279742</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105279742</guid><author>Evan_work</author><pubDate>Thu, 02 Apr 2020 22:08:36 +0800</pubDate><description><![CDATA[1、指针和引用的区别
1.引用是给变量起别名，内部实现是指针常量(int *const ret = &amp;a)可以简单的理解成，本体指针存放的是变量的地址。
2.引用的本质是指针常量，其指向不了修改，而指针可以改变指向。
3.引用创建的同时，必须初始化，指针创建的时候可以不用初始化。
4.引用不能为NULL，指针可以为NULL。
5.“引用变量ret”的内存单元保存的是“被引用变量a”的地址，...]]></description><category></category></item><item><title><![CDATA[C++的动态捆绑机制]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105104918</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105104918</guid><author>Evan_work</author><pubDate>Wed, 25 Mar 2020 21:32:33 +0800</pubDate><description><![CDATA[当编译器发现我们的类中有虚函数的时候，编译器会创建一张虚函数表，把虚函数的函数入口地址放到虚函数表中，并且在类中秘密增加一个指针，这个指针就是vpointer(缩写vptr)，这个指针是指向对象的虚函数表。
在多态调用的时候，根据vptr指针，找到虚函数表来实现动态绑定。
当虚函数涉及到继承的时候  子类 会继承 父类的（虚函数指针vfptr 虚函数表vftable）
编译器会将虚函数表中的函数入...]]></description><category></category></item><item><title><![CDATA[C++之多态]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105104419</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105104419</guid><author>Evan_work</author><pubDate>Wed, 25 Mar 2020 21:19:42 +0800</pubDate><description><![CDATA[引入

class Animal
{
public:
    void sleep(void)
    {
        cout&lt;&lt;"animal 动物在睡觉"&lt;&lt;endl;
    }
};

class Cat:public Animal
{
public:
    void sleep(void)
    {
        cout&lt;&lt;"Cat 猫在...]]></description><category></category></item><item><title><![CDATA[C++之多继承和虚继承]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105103465</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105103465</guid><author>Evan_work</author><pubDate>Wed, 25 Mar 2020 20:55:32 +0800</pubDate><description><![CDATA[多继承
概述：子类继承于多个父类。
多继承的格式：
class 子类: 继承方式1 父类名1,继承方式2 父类名2,继承方式3 父类名3,....
{

};
//表示子类 是由 父类名1,父类名2,父类名3...共同派生出来

注意：多继承容易产生二义性
解决办法：使用作用域访问成员
class Base1
{
public:
	int a;
};
class Base2
{
public:
	...]]></description><category></category></item><item><title><![CDATA[C++类的封装之 字符串MyString类]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105084591</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105084591</guid><author>Evan_work</author><pubDate>Tue, 24 Mar 2020 23:36:09 +0800</pubDate><description><![CDATA[包括了运算符重载&lt;&lt;     &gt;&gt;   =    +   ==       [ ]
mystring.h
#ifndef MYSTRING_H
#define MYSTRING_H
#include&lt;iostream&gt;
using namespace std;


class MyString
{
    friend ostream&amp; operator...]]></description><category></category></item><item><title><![CDATA[C++之继承和派生]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105084226</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105084226</guid><author>Evan_work</author><pubDate>Tue, 24 Mar 2020 23:25:42 +0800</pubDate><description><![CDATA[概述

继承的优点：减少代码的冗余  提高代码的重用性
继承的分类
继承方式分类：
public ： 公有继承   （重要）
private ： 私有继承
protected ： 保护继承
父类个数分类：
1.单继承：指每个派生类只直接继承了一个基类的特征   （一个父类 派生出 一个子类）
2.多继承：指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一个基类的特征（多个父类  ...]]></description><category></category></item><item><title><![CDATA[C++之=运算符重载]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105061032</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105061032</guid><author>Evan_work</author><pubDate>Mon, 23 Mar 2020 23:33:09 +0800</pubDate><description><![CDATA[1、类中没有指针成员
如果类中没有指针成员 ，不需要重载=运算，默认的浅拷贝就可以完成幅值。
#include &lt;iostream&gt;

using namespace std;
class Person
{
private:
    int a;
    int b;
public:
    Person():a(0),b(0)
    {
        cout&lt;&lt;"无...]]></description><category></category></item><item><title><![CDATA[C++运算符+重载]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/105020193</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/105020193</guid><author>Evan_work</author><pubDate>Sat, 21 Mar 2020 23:36:59 +0800</pubDate><description><![CDATA[全局函数作为友元 完成运算符重载+
#include &lt;iostream&gt;
#include&lt;string.h&gt;
using namespace std;
class Person
{
    //设置成友元函数 在函数内 访问Person类中的所有数据
    friend ostream&amp; operator&lt;&lt;(ostream &amp;out, P...]]></description><category></category></item><item><title><![CDATA[C++运算符重载]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/104999482</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/104999482</guid><author>Evan_work</author><pubDate>Fri, 20 Mar 2020 21:56:52 +0800</pubDate><description><![CDATA[运算符重载基本概念
运算符重载(operator overloading)只是一种”语法上的方便”,也就是它只是另一种函数调用的方式。
运算符重载，就是对已有的运算符重新进行定义，赋予其另一种功能，以适应不同的数据类型。
案例: 重载左移操作符(&lt;&lt;),使得 cout 可以输出对象。
#include &lt;iostream&gt;
#include&lt;string.h&gt;
...]]></description><category></category></item><item><title><![CDATA[C++ 之 友元]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/104999006</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/104999006</guid><author>Evan_work</author><pubDate>Fri, 20 Mar 2020 21:39:15 +0800</pubDate><description><![CDATA[友元的作用：c++允许 友元 访问 私有数据。
友元的分类：友元函数，友元成员函数，友元类。
友元的语法：
friend关键字只出现在声明处   其他类、类成员函数、全局函数都可声明为友元   友元函数不是类的成员，不带this指针   友元函数可访问对象任意成员属性，包括私有属性。
友元函数
即 普通全局函数作为类的友元
#include &lt;iostream&gt;
#include &l...]]></description><category></category></item><item><title><![CDATA[this指针的使用]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/104976217</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/104976217</guid><author>Evan_work</author><pubDate>Thu, 19 Mar 2020 20:58:07 +0800</pubDate><description><![CDATA[this指针
1、this指针是隐含在对象成员函数内的一种指针
2、成员函数通过this指针，就能知道操作的是哪一个对象的数据
3、静态成员函数 内部没有this指针，静态成员函数不能操作非静态成员变量（静态成员函数 是属于类，函数内部没有this 指针）
this指针的使用
1、当形参和成员变量同名时，可用this指针来区分
class Data
{
public:
	int num;
	//形...]]></description><category></category></item><item><title><![CDATA[C++单例模式设计——打印机]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/104976007</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/104976007</guid><author>Evan_work</author><pubDate>Thu, 19 Mar 2020 20:41:46 +0800</pubDate><description><![CDATA[步骤1：在单例类内部定义了一个P类型的静态对象，作为外部共享的唯一实例
步骤2：提供一个公共静态的方法，让客户可以访问它的唯一实例。
步骤3：为了防止在外部对实例化其他对象，将其默认构造函数和拷贝构造函数设计为私有
代码实现：
#include &lt;iostream&gt;

using namespace std;
class Printer
{
public:
    //2.提供一个方法...]]></description><category></category></item><item><title><![CDATA[构造函数、析构函数、拷贝构造函数]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/104954785</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/104954785</guid><author>Evan_work</author><pubDate>Wed, 18 Mar 2020 22:06:12 +0800</pubDate><description><![CDATA[1、构造函数
构造函数函数名和类名相同，没有返回类型，连void都不可以，但可以有参数，可以重载
构造函数：实例化对象的时候系统自动调用
2、析构函数
析构函数函数名是在类名前面加”~”组成,没有返回类型，连void都不可以,不能有参数，不能重载
析构函数：对象释放的时候系统自动调用
案例：
class Data
{
public:
    int num;
public:
    //构造函数(...]]></description><category></category></item><item><title><![CDATA[c++和c混合编程]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/104931963</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/104931963</guid><author>Evan_work</author><pubDate>Tue, 17 Mar 2020 21:51:19 +0800</pubDate><description><![CDATA[在  . c中的头文件里加上
#if __cplusplus
extern "C"{
#emdif
	
#if __cplusplus
}
#emdif

然后在 . cpp中包含下该头文件
fun.c
#include&lt;stdio.h&gt;
int my_add(int x,int y)
{
    return x+y;
}
int my_sub(int x,int y)
{
    ...]]></description><category></category></item><item><title><![CDATA[C++中的const  和宏#define的区别]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/104908947</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/104908947</guid><author>Evan_work</author><pubDate>Mon, 16 Mar 2020 22:11:27 +0800</pubDate><description><![CDATA[C++中的const
1、const int data = 10；//data先放入符号表
2、如果对data取地址 系统才会给data开辟空间
3、const int a = b;//b是变量名 系统直接给a开辟空间 而不放入符号表
4、cosnt 修饰自定义数据 系统为自定义数据开辟空间
C语言中的const
1、const修饰全局变量num  变量名只读  内存空间在文字常量区（只读）、不能...]]></description><category></category></item><item><title><![CDATA[分别用排序法和冒泡法编写排序函数]]></title><link>https://blog.youkuaiyun.com/Evan_work/article/details/104887479</link><guid>https://blog.youkuaiyun.com/Evan_work/article/details/104887479</guid><author>Evan_work</author><pubDate>Sun, 15 Mar 2020 22:14:54 +0800</pubDate><description><![CDATA[冒泡法排序
由小到大排序
void bubble(int *a,int n)
{
	int i=0,j=0;
	for(i=0;i&lt;n-1;i++)
	{
		for(j=0;j&lt;n-1-i;j++)
		{
			if(a[j]&gt;a[j+1])
			{
				int tmp =0;
				tmp=a[j];
				a[j]=a[j+1];
				a[j+1]=tmp;...]]></description><category></category></item></channel></rss>