构造函数 析构函数
功能 初始化对象 销毁对象
名称 类名 ~类名
调用时间 创建对象时 对象生命期结束时
参数 可有多个 没有
重载性 可重载 只有一个
返回值 无 无
默认性 可产生默认构造函数通常显示定义 可产生默认析构函数通常不显示定义
析构函数没有参数,不能重载,不能有缺省参数,而构造函数有参数,可以重载,可以有缺省参数
构造函数不能声明为虚函数,而析构函数一般都声明为虚析构函数
构造函数只能由系统自动调用,析构函数一般也是由系统自动调用,但也可以通过类的实例对象显示调用以保证实例的释放
构造函数完成对象的数据成员的内存初始化工作。构造函数在初始化类的实例对象时,首先初始化数据成员(初始化顺序和类中数据成员的声明顺序相同),然后执行构造函数体。
析构函数完成对象内存的释放工作,动态申请的内存需要释放。
编程人员没有为类提供构造函数时,编译系统自动提供一个无参的缺省构造函数,一旦编程人员为类提供了任何一个构造函数(包括拷贝构造函数),编译系统在编译时就不会提供无参的缺省构造函数,析构函数也是如此
单继承派生类构造时,首先构造基类,其次是派生类的数据成员的初始化(顺序和派生类数据成员的声明顺序相同),最后执行派生类的构造函数体
多继承派生类构造时,首先构造虚基类,多个虚基类按照他们被继承的顺序依次构造,其次构造一般基类,多个一般基类按照被继承的顺序构造,然后初始化派生类的数据成员,初始化顺序和派生类数据成员的声明顺序相同,最后执行派生类的构造函数体
构造函数需要初始化的数据,不论是否显示出现在构造函数的初始化参数列表中,都会在该处完成初始化,并且初始化顺序和该数据在初始化参数列表中出现的先后顺序无关,都遵循上面的构造顺序。
析构顺序一般和构造顺序相反
当派生类对象创建时,注意调用派生类构造函数之前先调用基类的构造函数,注意派生类构造函数的写法。
普通对象实例在定义时自动调用构造函数完成对象的初始化,当其出了作用域时自动调用析构函数进行所占用空间的释放
指针对象实例在用new分配指针所指内容时自动调用构造函数完成指针所指内存的初始化,当用delete删除该指针时自动调用析构函数进行指针所指内存的释放
VC++调试的时候进入类中的函数:到了 a = b这一行时,按F11,进入执行函数。
vc调试,一般是需要设置一个断点的,譬如1)int i;2)int j;如果在int j处设置了断点,那么当程序运行到int j时,程序停止,这个时候就可以查看程序各种变量或执行状态了,简单的办法就是把鼠标停在要看的变量上面。会有一个个小的d出窗口来显示变量状态。
正常情况下F11确实是单步步入。
你是release版还是debug版?
试试一下:
在函数内下断点。
把反汇编窗口关掉再f11
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)