<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BLoneliness的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BLoneliness</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BLoneliness]]></copyright><item><title><![CDATA[C++动态分配后的内存释放]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/99646910</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/99646910</guid><author>BLoneliness</author><pubDate>Thu, 15 Aug 2019 18:51:47 +0800</pubDate><description><![CDATA[最近在用C++写项目时遇到的一些动态分配上的易错点，所以写这篇博客来记录下。下面我会列举一些问题作为例子来总结一下动态分配的易错点，如有不对，欢迎指正。
我们经常会在一个函数中对指针进行动态分配。动态分配伴随着释放，不及时释放分配的内存会造成内存泄漏，那么我们应该什么时候在哪里释放已经分配的内存呢？
作用域结束后释放
常见的情况是在函数中动态分配了一个指针，我们在函数作用域结束时释放该指针，防止内...]]></description><category></category></item><item><title><![CDATA[TCP/IP协议与HTTP协议的关系]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/96863392</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/96863392</guid><author>BLoneliness</author><pubDate>Mon, 22 Jul 2019 15:31:50 +0800</pubDate><description><![CDATA[TCP/IP协议与HTTP协议的关系
最近开始学习计算机网络的相关知识，对与HTTP、TCP、IP协议的关系还不是太清楚，所以回顾下图解HTTP书上的讲解。书上通过一个HTTP通讯过程来说明HTTP协议和TCP协议、IP协议和DNS服务的关系。下面先简单介绍下IP协议、TCP协议和DNS服务。
IP（Internet Protocol）网际协议

IP（Internet Protocol） 网际协...]]></description><category></category></item><item><title><![CDATA[C++函数的参数传递]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/88089673</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/88089673</guid><author>BLoneliness</author><pubDate>Sun, 03 Mar 2019 16:27:01 +0800</pubDate><description><![CDATA[C++函数的参数传递
值传递
即将实参的值拷贝给形参，形参和实参是两个相互独立的对象，在函数体内对形参所做的所有操作都不会改变实参的值。
指针形参
将指针作为形参实质与值传递一样，即执行指针拷贝工作将实参（指针的值）赋给形参，拷贝后两个指针是不同的指针，但它们指向同一个对象，所以我们可以间接的访问它所指的对象并修改它，但在函数体内修改被赋值指针本身的值并不会改变实参（被传入指针的值）。
（ps：这...]]></description><category></category></item><item><title><![CDATA[递增递减运算符]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/87924736</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/87924736</guid><author>BLoneliness</author><pubDate>Mon, 25 Feb 2019 21:03:05 +0800</pubDate><description><![CDATA[递增和递减运算符
递增和递减运算符一共有前置和后置两个版本。
int i = 0, j;
j = ++i;	// j = 1, i = 1
j = i++;	// j = 1, i = 2

前置版本会将运算对象先加一，再返回运算结果作为左值返回，
后置版本也会将运算对象加一，但求值返回的是加一之前的对象的值的副本作为右值返回
我们也常常将解引用运算与递增（减）运算符号混用：
// 利用后置运算来...]]></description><category></category></item><item><title><![CDATA[C++类型修饰符的阅读顺序]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/87913199</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/87913199</guid><author>BLoneliness</author><pubDate>Mon, 25 Feb 2019 10:59:12 +0800</pubDate><description><![CDATA[C++类型修饰符的阅读顺序
默认情况下，类型修饰符从右向左依次绑定。
int *ptrs[10];	 	// ptrs是含有10个整数指针的数组

对于ptrs来说，从右往左理解，我们可知ptrs是一个大小为10的数组，然后知道数组中存放的是指向int类型的指针。
就数组而言，由内向外阅读要比从右向左阅读好多了
int (*Parray)[10] = &amp;amp;arr;	// Parray指向一个...]]></description><category></category></item><item><title><![CDATA[关于两个string相加]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/87079561</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/87079561</guid><author>BLoneliness</author><pubDate>Tue, 12 Feb 2019 12:19:16 +0800</pubDate><description><![CDATA[关于两个string相加
两个string对象可以相加，结果是两个string拼接而成。
string s1 = &quot;hello&quot;, s2 = &quot;world&quot;;
string s2 = s1 + s2;		// 结果为helloworld

字符（串）也可以和string对象相加，因为标准库允许将字符字面值和字符串字面值转换成string对象，但要求在+号两侧必须至少有一个为string：
// 允...]]></description><category></category></item><item><title><![CDATA[指针和const]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/86896811</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/86896811</guid><author>BLoneliness</author><pubDate>Sun, 10 Feb 2019 12:25:20 +0800</pubDate><description><![CDATA[指针和const
指向常量的指针
指向常量的指针（pointer to const）不能用于改变所指对象的值。想要存放常量对象的地址只能使用指向常量的指针：
const double pi  = 3.14;
double *ptr = &amp;amp;pi;			// error，ptr是一个普通指针
const double *cptr = &amp;amp;pi;	// 正确：cptr可以指向一个doubl...]]></description><category></category></item><item><title><![CDATA[const与引用]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/86892844</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/86892844</guid><author>BLoneliness</author><pubDate>Sun, 10 Feb 2019 11:40:26 +0800</pubDate><description><![CDATA[const的引用
可以把引用绑定到const对象上，称之为对常量的引用，简称	常量引用
下面是一段示例：
const int a = 15;
const int &amp;amp;r1 = a;  	//正确：引用及其对应的对象都是常量
r1 = 10; 				//错误，对常量的引用不能被用作修改它所绑定的对象
int &amp;amp;r2 = a;			//错误，试图让一个非常量引用指向一个常量对象

引用...]]></description><category></category></item><item><title><![CDATA[const 与 指针]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/78646907</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/78646907</guid><author>BLoneliness</author><pubDate>Mon, 27 Nov 2017 17:31:28 +0800</pubDate><description><![CDATA[·指向对象的常指针
   指针本身的值不能改变，即指向不能改变。
 类名
 *const   指针变量名 = 对象地址;
  
Time t1(10,25,0),t2;
Time *const p1 = &t1;    //p是指向t1的常指针
p1 = &t2;    //错误，p是指向对象的常指针

 始终指向同一对象
·指向常对象的指针
   const
  类型名 * 指针]]></description><category></category></item><item><title><![CDATA[静态成员函数、this指针、对象指针和动态对象使用小结]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/78586278</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/78586278</guid><author>BLoneliness</author><pubDate>Mon, 20 Nov 2017 22:13:58 +0800</pubDate><description><![CDATA[先声明一个Time类


·静态成员函数
·静态成员函数就是使用 
static 关键字声明的成员函数
   在类外实现时不加static关键字，只有在类内声明时才加static
·静态成员函数是类的一部分，作用是为了处理静态数据成员
   没有this指针
·静态成员函数可以直接访问该类的静态成员，但不能直接访问类中的非静态成员
·若想在静态成员fun中使用非静态成员，则必须]]></description><category></category></item><item><title><![CDATA[复制构造函数与普通构造函数的区别]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/78521550</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/78521550</guid><author>BLoneliness</author><pubDate>Mon, 13 Nov 2017 16:19:29 +0800</pubDate><description><![CDATA[1.形式上的不同：两者虽然函数名与类名相同，也不指定函数类型。但复制构造函数只有一个参数，并且是对同类对象的引用-------复制构造函数无法重载。
eg:  Time time1(15, 10, 5);
       Time time2(time1);          //实参是对象名
2.两者被调用的情况不同: 
对于赋值构造函数，只会在以下三种情况发生时被调用：

建立一个新]]></description><category></category></item><item><title><![CDATA[CString、string、string.h的区别]]></title><link>https://blog.youkuaiyun.com/BLoneliness/article/details/78439262</link><guid>https://blog.youkuaiyun.com/BLoneliness/article/details/78439262</guid><author>BLoneliness</author><pubDate>Fri, 03 Nov 2017 20:05:20 +0800</pubDate><description><![CDATA[CString：CString是MFC或者ATL中的实现，是MFC里面封装的一个关于字符串处理的功能很强大的类，只有支持MFC的工程才能使用。如在linux上的工程就不能用CString了，只能使用标准C++中的string类了。在MFC中使用不需要自己加，但在另外的程序中需要加入#include（CString）


string：string为标准模板类(STL)定义的字符串类，已纳入C]]></description><category></category></item></channel></rss>