<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CHF_VIP的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CHF_VIP</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CHF_VIP]]></copyright><item><title><![CDATA[VC 如何使程序运行后自己删除自己]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8594943</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8594943</guid><author>CHF_VIP</author><pubDate>Wed, 20 Feb 2013 16:01:36 +0800</pubDate><description><![CDATA[VC 如何使程序运行后自己删除自己

有时候，我们需要创建一个运行后能够自己删除自己的可执行程序即自删除程序。很明显如果一个进程通过直接调用DeleteFile()来删除自己是不可能的。必须另想办法，经过本人在网上参考很多资料后实际测试并集众家之所长，发现有二种方法效果比较好。现在将其封装成函数，这样使用将更加容易：
 
方法1，调用BAT文件。
//向指定文件写入文本。如果文件不存在就]]></description><category></category></item><item><title><![CDATA[C,C++宏中#和##]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8594750</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8594750</guid><author>CHF_VIP</author><pubDate>Wed, 20 Feb 2013 15:25:07 +0800</pubDate><description><![CDATA[文中__FILE__与示例1可以参见《使用ANSI
 C and Microsoft C++中常用的预定义宏》

宏中的#的功能是将其后面的宏参数进行字符串化操作（Stringizing operator），简单说就是在它引用的宏变量的左右各加上一个双引号。
如定义好#define STRING(x) #x之后，下面二条语句就等价。
       char *pChar = "hello]]></description><category></category></item><item><title><![CDATA[C++对参数直接赋值]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8586921</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8586921</guid><author>CHF_VIP</author><pubDate>Mon, 18 Feb 2013 10:21:35 +0800</pubDate><description><![CDATA[在C++中，可以为参数指定默认值。在函数调用时没有指定与形参相对应的实参时， 就自动使用默认参数。

默认参数的语法与使用：
（1）在函数声明或定义时，直接对参数赋值。这就是默认参数；
（2）在函数调用时，省略部分或全部参数。这时可以用默认参数来代替。

注意：
（1）默认参数只可在函数声明中设定一次。只有在没有函数声明时，才可以在函数定义中设定。(#add ,此句意为存在函数声明和]]></description><category></category></item><item><title><![CDATA[free和delete]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8306457</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8306457</guid><author>CHF_VIP</author><pubDate>Mon, 17 Dec 2012 11:06:41 +0800</pubDate><description><![CDATA[free
与 delete

1. delete
用于释放 new 分配的空间，free 有用释放 malloc 分配的空间
2. delete []
用于释放 new [] 分配的空间
3. delete
释放空间的时候会调用 相应对象的析构函数
     顺便说一下new在分配空间的时候同时会调用对象的构造函数，对对象进行初始化，使用malloc则只是分配内存
4.
调用]]></description><category></category></item><item><title><![CDATA[SVN使用教程]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8287894</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8287894</guid><author>CHF_VIP</author><pubDate>Wed, 12 Dec 2012 19:16:37 +0800</pubDate><description><![CDATA[还是SVN官网的教程最实用，而且介绍最全，这才是最牛的：
http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/]]></description><category></category></item><item><title><![CDATA[const用法]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8274949</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8274949</guid><author>CHF_VIP</author><pubDate>Sun, 09 Dec 2012 14:45:16 +0800</pubDate><description><![CDATA[const用法： 
一、总述
修饰符const用来限定变量只能被读取，不能被修改。当定义一个常量（const）时，必须赋一个值给它。
    C++中的const默认为内部连接，也就是说，const仅在const被定义过的文件里才是可见的，而在连接时不能被其他编译单元看到。
因此，可以把const的定义放在一个头文件中，让多个cpp文件包含该头文件，而不会出现重复定义。也可以在一个文件中定]]></description><category></category></item><item><title><![CDATA[在头.h写函数实现体和在cpp中写实现体的区别]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8274937</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8274937</guid><author>CHF_VIP</author><pubDate>Sun, 09 Dec 2012 14:42:24 +0800</pubDate><description><![CDATA[在头.h写函数实现体和在cpp中写实现体的区别：
其实区别就是一句话：
在.h中写成员函数的实现体就则该函数就是内联函数，在.cpp中写实现体就是普通成员函数。


 
****声明内联函数看上去和普通函数非常相似： 
     void f(int i, char c); 
     
     
    当你定义一个内联函数时，在函数定义前加上 inline 关键字，并且将]]></description><category></category></item><item><title><![CDATA[成员变量的初始化和赋值]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8274931</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8274931</guid><author>CHF_VIP</author><pubDate>Sun, 09 Dec 2012 14:40:00 +0800</pubDate><description><![CDATA[成员变量的初始化和赋值：
成员变量的赋值有如下两种情况：
第一种成员变量赋值：
class TesA
{
public:
TesA(){a = 1; b = 2;}// 第一种情况赋值
void OutPut();
private:
int a ;
int b; 


}; 
void TesA::OutPut()
{
cout 
cout 
}
第二种成员变]]></description><category></category></item><item><title><![CDATA[函数指针和指针函数]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8246074</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8246074</guid><author>CHF_VIP</author><pubDate>Sat, 01 Dec 2012 12:31:03 +0800</pubDate><description><![CDATA[函数指针和指针函数  
[函数指针]
函数类型 （*指针变量名）(形参列表)；
“函数类型”说明函数的返回类型，由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少，后面的“形参列表”表示指针变量指向的函数所带的参数列表。
例如：
int (*f)(int x);
double (*ptr)(double x);
在定义函数指针时请注意：
    
函数指针和它指向的函]]></description><category></category></item><item><title><![CDATA[对于左操作数必须为左值的问题]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8186479</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8186479</guid><author>CHF_VIP</author><pubDate>Thu, 15 Nov 2012 13:20:36 +0800</pubDate><description><![CDATA[C++中只有返回引用或指针时，返回值才能为左值，这时才能对返回值进行操作。
                         而返回值则不能为左值，也不能对返回值进行操作。
例如：
1.返回一个值。
class tesA
{
public:
tesA(){a=2;}
int geta(){return a;}


private:
int a;
};
int main(]]></description><category></category></item><item><title><![CDATA[sizeof()和.length()]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8172344</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8172344</guid><author>CHF_VIP</author><pubDate>Sun, 11 Nov 2012 22:37:35 +0800</pubDate><description><![CDATA[有些事摘自网上的资料： 
1.
sizeof可以计算一个类型乃至一个结构的大小空间
length只是针对字符串而言的
而且标准c里没有length这个函数
只有在C++中的string类中才有length这个函数
2.
关于sizeof()和string的c_str()和length()函数:
sizeof（）是求某种系统自带类型数据 或用户自定义类的大小的函数
比如：
int]]></description><category></category></item><item><title><![CDATA[取数组首地址的问题：]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8172175</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8172175</guid><author>CHF_VIP</author><pubDate>Sun, 11 Nov 2012 21:43:12 +0800</pubDate><description><![CDATA[数组第一个元素的地址和整个数组的首地址到底有什么区别呢？
例如：
1.
int main(int argc, char **argv)
{  
int  a[2]  = {7,8 };  
cout 
cout 


cout 
cout 


system("pause");
return 0;
}
从输出结果可以看出，a代表数组第一个元素的地址，&a代表整个数]]></description><category></category></item><item><title><![CDATA[数组和数组名的关系]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8172174</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8172174</guid><author>CHF_VIP</author><pubDate>Sun, 11 Nov 2012 21:42:26 +0800</pubDate><description><![CDATA[1.以下代码是正确的：
int main(int argc, char **argv)
{  
int  a[2] = {7,8}; 
cout 
int * c  ;
c =  a;
//cout 

system("pause");
return 0;
}
2.以下代码是错误的：会报错。
int main(int argc, char **argv)
{   
i]]></description><category></category></item><item><title><![CDATA[memset()函数用法]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8171015</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8171015</guid><author>CHF_VIP</author><pubDate>Sun, 11 Nov 2012 13:27:14 +0800</pubDate><description><![CDATA[memset()用于对整型数组或者结构体进行清0或者字符型数组赋初值或某个特定值。而不可以给整型或者double类型数组赋值：
例如
1.对整型数组全体赋某一个值。结果：错误。
  如果是对整型数组清0即memset(a,0,5*sizeof(int));改成那么是正确的。
int main(int argc, char **argv)
{ 
int a[5] ={1,2,3,4,5}]]></description><category></category></item><item><title><![CDATA[C++参数传递的四种方法]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8170479</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8170479</guid><author>CHF_VIP</author><pubDate>Sun, 11 Nov 2012 01:25:52 +0800</pubDate><description><![CDATA[目前我所了解的主要有四种参数传递：
1.值传递 2.采用引用 3.采用指针 4.采用指针型引用 


1.值传递 ：不能改变外部目标 a的值
class shu
{ 
public: 
void Out( int tempa )
{  
cout 
tempa ++;
cout 


}

}; 
int main(int argc, char **argv)]]></description><category></category></item><item><title><![CDATA[指针++ 的写法]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8170478</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8170478</guid><author>CHF_VIP</author><pubDate>Sun, 11 Nov 2012 01:24:37 +0800</pubDate><description><![CDATA[今天在看基础是发现如下代码执行*tempa ++后竟然会出现随机数： 
class shu
{ 
public: 
void Out( int * tempa )
{  
cout 
*tempa ++;
cout 


}

}; 
int main(int argc, char **argv)
{
int a  = 1;
int *b = &a; 
 
s]]></description><category></category></item><item><title><![CDATA[C++申请变量什么时候崩溃什么时候不崩溃]]></title><link>https://blog.youkuaiyun.com/CHF_VIP/article/details/8170477</link><guid>https://blog.youkuaiyun.com/CHF_VIP/article/details/8170477</guid><author>CHF_VIP</author><pubDate>Sun, 11 Nov 2012 01:23:18 +0800</pubDate><description><![CDATA[大家都知道在c++中申请变量并初始化是一个有效保证代码正确的好习惯。但是今天发现一个有趣的地方：
我在申请b后直接输出b，看如下代码： 
int main(int argc, char **argv)
{
int b ; 
cout 


int *a = 0;  
a= &b ;  
  
system("pause");
return 0;
}

这个时候系统会崩]]></description><category></category></item></channel></rss>