C++面向对象:派生类声明与内联函数详解

需积分: 0 0 下载量 121 浏览量 更新于2024-08-24 收藏 1.66MB PPT 举报
在C++面向对象编程中,派生类是继承机制的核心概念,它允许一个新类(派生类)基于已存在的类(基类)来定义。派生类的声明语法遵循以下结构: ```cpp class 派生类名 : 访问控制 基类名 { // 数据成员和成员函数声明 }; ``` 其中,`访问控制`部分定义了派生类如何访问基类的成员。C++提供了三种访问控制类型: 1. **公有继承** (`public`):默认情况下,派生类可以公开继承基类的所有公共(public)和保护(protected)成员。这意味着派生类可以直接访问和修改这些成员。 2. **私有继承** (`private`):如果明确指定私有继承,派生类只能访问基类的私有(private)数据成员,基类的公共和保护成员对派生类来说则是不可见的。 3. **保护继承** (`protected`):在保护继承下,派生类只能访问基类的保护成员,以及基类的私有成员。但是,派生类的子类(孙子类等)可以访问这些受保护的成员。 以`Cat`类为例,若要让`Cat`类从另一个类(如`Animal`)派生,并且想要在`main.cpp`中通过对象`aCat`调用`shout()`方法输出“喵”,可能的代码如下: ```cpp // Cat.h #include <string> using namespace std; class Animal { public: virtual void shout() = 0; // 虚拟函数声明,用于多态 }; class Cat : public Animal { // 公有继承Animal public: string shout() override; // 重写虚函数 private: // 数据成员... }; // Cat.cpp #include "Cat.h" string Cat::shout() override { return "喵"; } // main.cpp #include <iostream> #include "Cat.h" int main() { Cat aCat; // 创建Cat对象 cout << aCat.shout() << endl; // 输出“喵” // 可能的多态应用... return 0; } ``` 在本例中,`Cat`类继承自`Animal`,并重写了`shout()`函数。`Animal`中的`shout()`被声明为虚函数,使得在`main.cpp`中通过`aCat`调用`shout()`时,实际上是调用了`Cat`类的实现。 此外,文件中还提及了内联函数,这是一种优化技术,将经常执行的简单操作作为函数进行定义,以减少函数调用的开销。内联函数使用`inline`关键字在函数声明前标记,如下所示: ```cpp // 使用inline的内联函数示例 inline bool isDigit(char c) { return (c >= '0' && c <= '9'); } ``` 这段代码中,`isDigit`函数是一个内联函数,用于判断字符是否为数字,简化了`main()`函数中的条件检查逻辑。在编译期间,编译器会尝试将内联函数的代码替换到调用的地方,从而提高程序运行效率。