随笔分类 - C++
摘要:http://www.oschina.net/question/12_14213
阅读全文
摘要:《c++ primer》15.2.2节中有这样一段话: 派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊权限。 例子:Item_base是Bulk_item的基类,Bulk_item定义了一个成员方法,接受一个Bulk_item对象的引用,和一个Item_base类型对象的引用,该函数可以访问自己对象的protected成员和Bulk_item形参的protected成员,但是,它没有Item_base类型形参的protected成员的访问权限。代码验证:Item_base.h:#ifndef ITEM_BASE_H_INCL.
阅读全文
摘要:windows有QueryPerformanceFrequency和QueryPerformanceCounter两个api,通过他们可以精确的计算机的运行时间。 (1)QueryPerformanceFrequency能获取计算机内精确计时器每秒的滴答数。 如果硬件不支持,则会返回0表示失败。 (2)QueryPerformanceCounter能获取计算机内精确计时器从开机起的总滴答数。 如果硬件不支持,则会返回0表示失败。例子代码:#include <windows.h>
#include <ctime>
#include <iostream> usi
阅读全文
摘要:1、枚举类型enum EColor{eRed, eYellow}中,EColor和eRed,eYellow的作用域是相同的。即EColor和eRed被定义在同一个地方。2、联合类型union中的成员,可以是基本类型,数组,枚举的变量。但如果union的成员是一个class或struct类型,则这个类型必须有一些限制,如:不能含有用户定义的构造方法,复制构造等。3、extern int ival = 10; //初始化,所以是定义。 double money; //没有extern关键字,所以是定义 以上两条语句都是定义。4、类,const变量和inline函数可以在多个源文件中重定义,只要他们
阅读全文
摘要:时常在cpp的代码之中看到这样的代码: #ifdef __cplusplusextern "C" {#endif//一段代码#ifdef __cplusplus}#endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。 要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c++中,为了支持重载机制,在编译生成的汇编码中,要对
阅读全文
摘要:C++语言中的<ctime>头文件,也就是C语言的<time.h>中提供时间函数。其中主要是3中数据结构:time_t,clock_t和struct tm。其实time_t和clock_t都是一个整形数,time_t记录的是秒数,而在Windows下,clock_t存储的是毫秒数。 一、获取时间 1、clock_t clock ( void ); 作用:获取程序运行的clock数。在Windows下,每秒有1000个clock,也就是clock的精度是1毫秒。2、time_t time ( time_t * timer ); 作用:可以得到从1970年1月1日到现在的秒
阅读全文
摘要:C/C++编译器的预处理器定义了一些名字:__FILE__,__LINE__,__FUNCTION__,__DATE__,__TIME__等。 顾名思义: __FILE__:表示当前文件的文件名(含绝对路径)。 __LINE__:表示当前行号。 __FUNCTION:表示当前函数名字(不包括返回值和实参,仅仅是函数名) __DATE__:表示预编译的日期吧(应该是这样的) __TIME__:表示预编译的时刻吧(应该是) 通过他们我们就可以实现对代码的跟踪。 程序代码:#include <iostream>#include <cstdlib>using namespace
阅读全文
摘要:来源:http://www.cppblog.com/shaovie/articles/14038.htmlC语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Wa...
阅读全文