VisualC++与面向对象:虚基类和对象存储结构

需积分: 11 2 下载量 201 浏览量 更新于2024-07-14 收藏 7.09MB PPT 举报
"本资源主要探讨了虚基类的派生类对象存储结构,结合了哈工大C++课程的相关内容,由讲师张淼讲解。课程介绍了Visual C++程序设计的基本概念,强调了C++作为面向对象语言在Visual C++集成开发环境中的应用。课程涵盖了从C语言的集成开发环境到C++的高级特性,特别是对于虚基类在多级派生中的存储布局进行了讲解。" 在C++中,虚基类的概念是为了解决多继承时的二义性问题。当一个类可以从多个具有共同基类的派生类中派生出来时,如果不使用虚基类,每个派生类都会包含基类的一个副本,可能导致内存浪费和访问混乱。虚基类机制确保所有派生类都共享同一个基类实例,从而避免了二义性和内存重复。 描述中提到的"B, B1, B2, C, b1, b2, d"可能代表类的层次结构,其中B是虚基类,B1和B2是从B派生的非虚基类,C可能是从B1和B2同时派生的多继承派生类,而b1和b2是C类中用于访问B1和B2的子对象的指针或引用,d可能表示C类的其他成员。这种存储结构确保了对虚基类B的唯一实例化。 在C++的内存模型中,派生类的对象会包含基类的所有成员,如果是虚基类,其数据成员会在最底层的派生类对象中找到,这个位置被称为虚基类表的入口。这意味着无论对象通过哪个派生类被访问,都能找到虚基类的同一实例,这就是虚基类的“虚”存储特性。 张淼教授的课程还涉及了Visual C++作为C++的可视化集成开发环境,它是微软提供的用于开发Windows应用程序的工具,支持窗口应用程序和控制台应用程序的创建。控制台应用程序通常用于简单的文本输入和输出,而Windows窗口程序则利用事件驱动的编程模型,基于消息传递机制,提供更丰富的用户交互体验。 课程内容还回顾了程序设计的基本概念,从机器语言、汇编语言到高级语言的发展,以及编译器的工作流程,强调了高级语言的可移植性和接近自然语言的特性。此外,还提到了VC++在开发Windows应用程序中的作用,以及Windows应用程序与DOS程序设计的区别,后者是基于命令行的,而前者则是基于图形用户界面的。