C++程序设计:面向对象与对象的支配规则

需积分: 10 79 下载量 169 浏览量 更新于2024-08-23 收藏 2.1MB PPT 举报
"支配规则-c++程序设计" 在C++编程中,支配规则是关于成员访问和解析的一个关键概念,特别是在类的继承体系中。当一个派生类从基类继承时,可能会出现同名成员的情况。支配规则规定了在这种情况下的访问优先级,即在派生类中如何正确地访问和调用这些成员。 1. **支配规则概述** - 在C++中,如果派生类和基类中有同名成员(如数据成员或成员函数),在派生类对象中访问这些同名成员时,会优先使用派生类中的定义,这就是所谓的“支配”。 - 这个规则确保了派生类可以覆盖或扩展基类的功能,而不会意外地访问到基类的同名成员。 2. **访问修饰符的影响** - 基类成员的访问权限(public、private、protected)会影响支配规则的执行。例如,如果基类的成员是private,那么即使在派生类中,也不能直接访问这个成员,除非在基类中提供公有或受保护的访问接口。 - 如果基类成员是protected,派生类可以访问这个成员,但外部代码不能直接访问。 3. **派生类新增成员** - 派生类可以添加新的成员,这些新成员不会覆盖基类的同名成员,而是作为独立的实体存在。 - 通过明确指定作用域解析运算符(::)可以显式地访问基类的同名成员,例如 `base_class::member`。 4. **实例化和成员访问** - 示例代码中的 `D v; v.x=5;` 表示创建了一个派生类D的对象v,并设置了其成员x的值。这里的x可能是基类A中的成员,也可能是派生类D中新增的成员。如果没有明确的支配规则,C++会优先考虑派生类中的成员。 5. **多态性与虚函数** - 当基类的成员函数是虚函数(`virtual`关键字声明)时,通过指针或引用调用这个函数会根据对象的实际类型(动态类型)来决定调用哪个版本的函数,这是支配规则在多态性中的体现。 - 虚函数允许派生类重写基类的行为,使得同一份代码可以根据对象的不同类型表现出不同的行为。 6. **封装与隐藏** - C++的封装特性使得类可以隐藏其内部实现,只暴露必要的接口。通过支配规则,派生类可以在保持基类封装性的前提下,扩展或修改基类的行为。 7. **面向对象编程的核心** - 面向对象编程(OOP)的核心思想是将数据和操作数据的方法封装在一起形成对象,通过对象之间的交互完成任务。 - 类是对象的模板,定义了对象的属性(数据成员)和行为(成员函数)。 - 消息传递是对象之间通信的方式,一个对象通过调用另一个对象的成员函数(发送消息)来请求服务或改变其状态。 支配规则在C++中扮演着至关重要的角色,它规范了在类继承中如何处理同名成员,确保了代码的灵活性和可扩展性。在实际编程中,理解并熟练运用支配规则对于编写高效、可维护的C++代码至关重要。