AssertValid
来源:互联网 发布:韩国服装设计软件 编辑:程序博客网 时间:2024/06/05 08:30
有效性检查
// Example for CObject::AssertValid.
void CAge::AssertValid() const
{
CObject::AssertValid();
ASSERT( m_years > 0 );
ASSERT( m_years < 105 );
Dump 函数用来按指定的格式输出一个对象的成员变量,来帮助你诊断一个对象的内部情况。与AssertValid成员函数一样,Dump也是Cobject 类的成员函数。Dump函数的参数是一个CdumpContext对象,你可以象利用流一样往向这个对象中输入数据。当你创建一个Cobject继承而来的 新类时,你可以按如下步骤重载你自己的Dump函数:
(1) 调用基类的Dump函数,以输出基类的内容;
(2) 向Cdumpcontest对象输出该类的数据.
例如,典型的Dump函数定义如下:
#ifdef _DEBUG
void CPerson::Dump( CDumpContext& dc ) const
{
// call base class function first
CObject::Dump( dc );
// now do the stuff for our specific class
dc < < "last name: " < < m_lastName < < "/n "
< < "first name: " < < m_firstName < < "/n ";
}
#endif
你可能已经注意到整个函数的定义都包含在#ifdef _DEBUG 和#endif中,这使得Dump成员函数只在DEBUG版本中发生作用,而对RELEASE版本不发生作用。
再补充几个其它调试方法,希望对大家有所帮助
ASSERT_VALID宏用来在运行时检查一个对象的内部合法性,比如说现在 有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。事实上,ASSERT_VALID宏就是转化为对象的成员函数AssertValid()的调用,只是这种方法更安全。它的参数是一个对象指针,通过这个指针来调用它的AssertValid()成员函数。
与此相配套,每当我们创建从Cobject类继承而来的一个新的类时,我们可以重载该成员函数,以执行特定的合法性检查。
TRACE 宏有点象我们以前在C语言中用的Printf函数,使程序在运行过程中输出一些调试信息,使我们能了解程序的一些状态。但有一点不同的是:TRACE 宏只有在调试状态下才有所输出,而以前用的Printf 函数在任何情况下都有输出。和Printf 函数一样,TRACE函数可以接受多个参数如:
int x = 1;
int y = 16;
float z = 32.0;
TRACE( "This is a TRACE statement/n " );
TRACE( "The value of x is %d/n ", x );
TRACE( "x = %d and y = %d/n ", x, y );
TRACE( "x = %d and y = %x and z = %f/n ", x, y, z );
要注意的是TRACE宏只对Debug 版本的工程产生作用,在Release 版本的工程中,TRACE宏将被忽略。
- AssertValid
- AssertValid函数
- AssertValid函数学习
- AssertValid和Dump
- AssertValid()与Dump()函数
- AssertValid函数学习
- AssertValid函数学习 .
- AssertValid与Dump的介绍
- AssertValid和Dump函数的应用
- AssertValid和Dump函数的应用
- AssertValid和Dump函数的应用
- AssertValid和Dump函数的应用
- AssertValid和Dump函数的应用
- AssertValid和Dump函数的应用
- MFC中的AssertValid和Dump函数
- VC中,AssertValid和Dump函数
- VC++的AssertValid和Dump函数的应用详解
- AssertValid和Dump 这两个函数的作用
- 站村
- poj 3481
- 发现 FB 系统在非法关机的时候特别容易 出现 磁盘 CLEAN OR NOT CLEAN 问题
- 我该怎么办
- java
- AssertValid
- protocol buffer
- Film
- 自学过程中碰到问题了,myeclipse中出现感叹号和红色叉号,迷惑
- ubuntu 配置使用adb安装调试程序
- redhat linux 安装总结
- .net配置全局编码
- VS2008 和 BCGControlBar 发布程序方法交流 ---- 补充
- dedecms 利用sql语句页面查询相关文章