ASSERT_VALID(pDoc)分析

ASSERT_VALID(pDoc)分析这个宏都是MFC的调试宏.ASSERT_VALID宏用来在运行时检查一个对象的内部合法性,比如说现在有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。事实上,

大家好,又见面了,我是你们的朋友全栈君。

这个宏都是MFC的调试宏.

ASSERT_VALID宏用来在运行时检查一个对象的内部合法性,比如说现在有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。

 

事实上,ASSERT_VALID宏就是转化为对象的成员函数AssertValid()的调用,只是这种方法更安全。它的参数是一个对象指针,通过这个指针来调用它的AssertValid()成员函数。

与此相配套,每当我们创建从Cobject类继承而来的一个新的类时,我们可以重载该成员函数,以执行特定的合法性检查

ASSERT_VALID强制调用参数对象(必须是CObject或CObject*)的AssertValid函数,该函数实现对象的内部一致性检查,当你创建一个可重用类时,应该重载这个函数(VC中缺省已经重载了该函数),你可以在该函数中进行必要的检查工作.
ASSERT宏用于确保参数内的表达式正确,如果表达式为false,则会显示一个消息对话框,其中有源文件的名字和当前行号,用户可以选择中断程序或进行调试.这个宏通常用于校验参数和返回值.
以上两个宏均只在Debug版本中有效,与ASSERT相对应的是VERIFY.VERIFY宏在Debug版本中与ASSERT相同,在Release版本中仅执行参数表达式,不进行校验.

ASSERT 和 ASSERT_VALID
都是用于Debug的,当括号中的表达式为FALSE时,会弹出对话框通知,
你可以自己加上一句ASSERT(FALSE),看看执行时有什么东东。

ASSERT_VALID用于对C++对象或指针进行有效性判断,如果出错,结果和ASSERT一样。

注意:二者都只能在MFC工程里用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155640.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Idea激活码最新教程2023.3.5版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.3.5版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 3 5 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 3 5 成功激活

    2025年5月27日
    0
  • Oracle没有WM_CONCAT函数的解决办法

    Oracle没有WM_CONCAT函数的解决办法解决ORA-00904:”WMSYS”.”WM_CONCAT”WM_CONCAT是oracle的非公开函数,并不鼓励使用,新版本oracle并没有带此函数,需要手工加上。1、下载根据下方链接下载三个文件:owmctab.plb、owmaggrs.plb、owmaggrb.plbhttps://download.csdn.net/download/qq_39997939/741429102、执行用sqlplus登录,执行下载的脚本sqlplus/assysdba

    2022年6月14日
    89
  • python tkinter库 密码实时显示_python tkinter库实现气泡屏保和锁屏

    python tkinter库 密码实时显示_python tkinter库实现气泡屏保和锁屏本文实例为大家分享了pythontkinter库实现气泡屏保和锁屏的具体代码,供大家参考,具体内容如下显示效果如下:代码:importrandomimporttkinterimportthreadingfromctypesimport*classRandomBall(object):”””定义关于球的类”””def__init__(self,canvas,screen_wid…

    2022年7月21日
    12
  • java接口中方法、属性修饰符详解「建议收藏」

    java接口中方法、属性修饰符详解「建议收藏」java接口的修饰符:abstract(inteeface本身就是抽象的,加不加abstract都一样)。接口中字段的修饰符:public static final(默认不写)如下解释:public: 使接口的实现类可以使用这个常量static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量。…

    2022年6月13日
    40
  • android WebView总结

    android WebView总结

    2021年12月6日
    43
  • C++日志系统log4cxx使用总结[通俗易懂]

    C++日志系统log4cxx使用总结[通俗易懂]本文主要从log4cxx级别、layout、格式化、命名规则、Filter几个方面介绍。 一、log4cxx命名规则        Logger由一个String类的名字识别,logger的名字是大小写敏感的,且名字之间具有继承的关系,子名有父名作为前缀,用点号.分隔。如:x.y是x.y.z的父亲。根logger(rootlogger)是所有logger的祖先, 它具有如下属性:1…

    2022年6月17日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号