2013年2月27日
摘要: assert()在release中没有任何作用(转)发布时间:2011-10-08 11:51:02技术类别:自由话题最近在调试别人写的代码。被assert()狠狠的涮了一把。现在将涮我的代码片段摘录如下: else if( m_radarLevel > c_maxRadarLevel ) {//可以在预计正常情况下程序不会到达的地方放置断言 :assert false ASSERT( false ); m_radarLevel = c_maxRadarLevel; }【注】c_maxRadarLevel是一个全局变量,出错前的值为16。因为m_radarLevel 值得范围是0--32 阅读全文
posted @ 2013-02-27 22:58 侠骨豪情 阅读(369) 评论(2) 推荐(1) 编辑
摘要: extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编 译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern 阅读全文
posted @ 2013-02-27 20:38 侠骨豪情 阅读(319) 评论(1) 推荐(1) 编辑
  2013年2月26日
摘要: String的赋值函数operator=的实现如下:CMystring& CMystring::operator=( const CMystring& other ) { if( this == &other ) // 检查自身赋值 { return *this; }if( m_data != NULL ) { delete []m_data; // 释放原有的空间 m_data = NULL; }m_data = new char[ strlen(other.m_data)+1 ]; if( m_data == NULL ) { cout << " 阅读全文
posted @ 2013-02-26 17:39 侠骨豪情 阅读(438) 评论(0) 推荐(1) 编辑
摘要: 一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。请看下面的程序。?12345678910111213141516171819202122#include ;usingnamespacestd;classT {public:T() { cou 阅读全文
posted @ 2013-02-26 16:28 侠骨豪情 阅读(376) 评论(0) 推荐(1) 编辑