C++
rickys2080
Just for fun
展开
-
C++智能指针详解
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::share转载 2012-08-28 09:59:18 · 784 阅读 · 0 评论 -
break while(1)
#include #include using namespace std;int CountBreakWhile(int n, int MilliSecondsOnce)//总次数, 每次多少毫秒,可为0{ static int count = 0;//static if(n<0 || MilliSecondsOnce<0) { return原创 2013-03-28 16:03:17 · 1869 阅读 · 0 评论 -
C/C++语言宏中使用参数做结构体成员
代码:#include #define MAKE(Object, member, value) ( (Object)-> ## member = (value) ) //宏 using namespace std;int main(int argc, char *argv[]){ struct student { int age; int score; };原创 2013-04-26 18:36:20 · 1638 阅读 · 0 评论 -
面向结构和面向对象区别
面向对象与面向过程的区别:1、面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使 用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象, 建立对象的目的不是为了完成一个步骤, 而是 为了描叙某个事物在整个解决问题的步骤中的行为。 2、面向对象以 数据(属性)为导向,将具有相同一个或者多个属性的物体抽象为“类”,将 他们包装起来;而有了这些数据转载 2013-05-10 14:22:13 · 3830 阅读 · 0 评论 -
复数乘法中的结构体赋值
#include using namespace std;typedef struct{ double real; double imag;} complex;//复数乘法complex X_complex(complex a, complex b){ complex temp; temp.real = a.real * b.real - a.imag * b.ima原创 2013-06-19 11:34:58 · 1623 阅读 · 0 评论 -
register关键字在c语言和c++中的差异
在c++中:(1)register 关键字无法在全局中定义变量,否则会被提示为不正确的存储类。(2)register 关键字在局部作用域中声明时,可以用 & 操作符取地址,一旦使用了取地址操作符,被定义的变量会强制存放在内存中。在c中:(1)register 关键字可以在全局中定义变量,当对其变量使用 & 操作符时,只是警告“有坏的存储类”。转载 2013-07-12 11:04:08 · 1025 阅读 · 0 评论 -
C调用Cpp代码时的enum类型定义共享问题
C调用Cpp代码时的enum类型定义共享问题原创 2013-07-18 10:01:12 · 1580 阅读 · 0 评论 -
CnComm v1.51 多线程串口通讯库
/*! \mainpage CnComm v1.51 多线程串口通讯库 * \section About 关于 * * \n 版本: CnComm v1.51 * \n 用途: WINDOWS/WINCE 多线程串口通讯库 * \n 语言: C++ (ANSI/UNICODE) * \n 平台: WINDOWS(WIN98/NT/2000/XP/2003/Vista);转载 2014-10-25 11:38:11 · 4355 阅读 · 0 评论 -
C++模板
文一:http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/15/2138705.htmlC++之模板 有以下这样3个求加法的函数: 1 int Add(int x,int y) 2 { 3 return x+y; 4 } 5 6 double Add(double x,double y) 7 { 8转载 2013-04-02 10:49:58 · 975 阅读 · 0 评论 -
C++中new的防错处理
#include using namespace std;int new1(void){ char *test=NULL; while(1) { test = NULL; test = new char[1000000]; if(test == NULL) //错误的处理方式,因为会抛出异常,而非NULL原创 2013-02-21 18:06:17 · 1084 阅读 · 0 评论 -
虚函数效率低的原因
设想一下,如果说不是虚函数,那么在编译时期,其相对地址是确定的,编译器可以直接生成jmp/invoke指令; 如果是虚函数,多出来的一次查找vtable所带来的开销,倒是次要的,关键在于,这个函数地址是动态的,譬如 取到的地址在eax里,则在call eax之后的那些已经被预取进入流水线的所有指令都将失效。流水线越长,一次分支预测失败的代价也就越大。 pf->test(); 0转载 2013-01-09 15:54:20 · 1048 阅读 · 0 评论 -
Const,Const函数,Const变量,函数后面的Const
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设转载 2012-09-25 09:12:25 · 871 阅读 · 1 评论 -
深入理解C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面转载 2012-09-25 09:14:06 · 728 阅读 · 0 评论 -
c++ 函数返回引用
一,c++函数的返回分为以下几种情况 1)主函数main的返回值:这里提及一点,返回0表示程序运行成功。2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象。用函数返回值初始化临时对象与用实参初始化形参的方法是一样 的。如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。且其返回值既可以是局部对象,也可以是求解表达式的结果。3)返回引转载 2012-09-25 09:16:28 · 737 阅读 · 0 评论 -
C++类的总结(轻松语言版)
1. 常成员函数由于数据封装在类的内部,在处理一些问题的时候就需要小心翼翼,不能把成员数据破坏了。以前我们介绍使用const来保护变量(就变成了常量),或保护指针所指向的内容,那么在类中,我们也可以使用const这个保留字来保护成员数据不被成员函数改变。我们把这种成员函数称为常成员函数。它的写法就是在函数的参数表后面加上一个const,比如: int readi() const;//通原创 2013-01-09 17:50:23 · 1042 阅读 · 0 评论 -
C++ Vector 与STL Iterator的使用
#include #include #include using namespace std;int main(int argc, char *argv[]){ cout<<"STL_TEST"<<endl; vector iv; for(int i=0; i<10; i++) { iv.push_back(i); }原创 2016-02-15 10:40:04 · 910 阅读 · 0 评论