12 2017 档案

摘要:识别类和类之间的关系 在父类中声明为私有的成员,虽然子类对象无法直接访问,但是在子类对象的内存结构中,父类私有的成员数据依然存在。 在没有提供构造函数的时候,系统会尝试提供默认的构造函数: 当子类中没有构造函数或析构函数,而它的父类却需要构造函数与析构函数是,编译器会为这个子类提供默认的构造函数与析 阅读全文
posted @ 2017-12-21 07:48 _No.47 阅读(546) 评论(0) 推荐(0)
摘要:虚函数的机制 当类中定义有虚函数时,编译器会将该类中所有虚函数的首地址保存在一张地址表中,这张表被称为虚函数地址表。编译器还会在类中添加一个虚表指针。 举例: CVirtual类的构造函数中没有进行任何操作,但是我们来看构造函数内部,还是有一个赋初值的操作: 这个地址指向的是一个数组: 这些数组中的 阅读全文
posted @ 2017-12-19 09:26 _No.47 阅读(874) 评论(0) 推荐(0)
摘要:局部对象 当对象所在作用域结束之后,销毁栈空间,此时析构函数被调用。 举例: 函数返回时自动调用析构函数: 堆对象 调用析构代理函数来处理析构函数: 为什么使用析构代理函数来调用析构函数?考虑到如果delete的对象是一个对象数组,可以使用析构代理函数依次析构所有的对象。举例: 调用了构造代理函数: 阅读全文
posted @ 2017-12-17 11:01 _No.47 阅读(461) 评论(0) 推荐(0)
摘要:出现这种警告的原因是因为我们没有使用安全的字符串处理函数。如果想屏蔽这种警告,可以使用: 还可以使用其它的方法,参考: https://www.cnblogs.com/gb2013/archive/2013/03/05/SecurityEnhancementsInTheCRT.html 阅读全文
posted @ 2017-12-15 08:37 _No.47 阅读(655) 评论(0) 推荐(0)
摘要:对象生成时会自动调用构造函数。只要找到了定义对象的地方,就找到了构造函数调用的时机。不同作用域的对象的生命周期不同,如局部对象、全局对象、静态对象等的生命周期各不相同,只要知道了对象的生命周期,便可以推断出构造函数的调用时机。 局部对象 反汇编: 获取对象首地址并调用构造函数: 对象的地址为: 进入 阅读全文
posted @ 2017-12-13 05:26 _No.47 阅读(4344) 评论(0) 推荐(1)