C++虚函数与友元函数:基类与派生类操作详解

需积分: 35 0 下载量 28 浏览量 更新于2024-08-24 收藏 1.05MB PPT 举报
本课件主要讲解C++中关于基类对象和派生类对象的基础概念,以及涉及到的虚函数和友元函数的相关知识点。首先,我们来理解基类对象(Base)和派生类对象(Derive)的区别。在C++中,通过继承创建派生类时,派生类可以从基类中继承属性和行为。例如,定义了基类`Base`和派生类`Derive`,我们可以通过`Base b;`和`Derive d;`来实例化它们的对象。 基类对象`b`和派生类对象`d`都可能有一个名为`Show()`的成员函数,但当需要在基类指针`Base *basep`上调用`Show()`时,如果`Show()`不是虚函数,那么它将调用基类的实现,而不是派生类可能有的重写版本。为了实现这一点,需要在基类中声明`Show()`为虚函数,以便在派生类中重写并确保正确的行为。 友元函数是C++中的一种特殊机制,它允许类外部的函数访问类的私有和保护成员,即使这些函数不是类的成员。友元函数的声明通常在类体内部使用`friend`关键字,如`friend floatVolume(A& a);`,这里的`floatVolume`就是一个友元函数,它可以访问类`A`中的`x`和`y`成员。 友元函数的使用需要注意以下几点: 1. 友元函数是非成员函数,调用方式与普通函数一致,但需要通过对象名或引用传递对象才能访问其成员。 2. 友元函数破坏了类的封装性和隐藏性,因为它们可以访问类的所有数据,包括私有成员。 3. 在示例代码中,类`A`有一个成员函数`Sum()`,同时还有一个友元函数`floatSum(A&)`。友元函数`floatSum(A&)`可以访问类的私有成员,并且在`main()`函数中,可以直接通过对象`t1`和`t2`调用。 基类对象和派生类对象在C++编程中扮演着重要角色,尤其是当需要动态多态和访问控制时。友元函数则提供了一种特殊的访问权限,但应谨慎使用,因为它可能会削弱类设计的封装性。理解并熟练掌握这些概念对于编写高效、可维护的C++程序至关重要。