C++第三讲
发布人:shili8
发布时间:2025-01-24 14:19
阅读次数:0
**C++ 第三讲: 类、对象和继承**
在前两讲中,我们已经学习了 C++ 的基本语法和数据类型。今天我们将继续讨论更高级的主题:类、对象和继承。
###1. 类和对象在面向对象编程中,类是用来描述一个事物或概念的模板,而对象则是根据这个模板创建出来的具体实例。例如,我们可以定义一个 `Person` 类来描述一个人,这个类包含了人的基本属性,如姓名、年龄、性别等。
cppclass Person { public: string name; int age; char sex; // 构造函数 Person(string n, int a, char s) { name = n; age = a; sex = s; } // 方法 void displayInfo() { cout << "姓名:" << name << endl; cout << "年龄:" << age << endl; cout << "性别:" << sex << endl; } };
在这个例子中,我们定义了一个 `Person` 类,它包含三个成员变量:`name`、`age` 和 `sex`。我们还定义了一个构造函数来初始化这些成员变量,以及一个 `displayInfo()` 方法来输出个人信息。
###2. 对象的创建和使用要使用这个类,我们需要创建一个对象,然后调用它的方法。例如:
cppint main() { // 创建一个 Person 对象 Person p("张三",25, '男'); // 调用 displayInfo 方法 p.displayInfo(); return0; }
在这个例子中,我们创建了一个 `Person` 对象 `p`,并调用它的 `displayInfo()` 方法来输出个人信息。
###3. 继承继承是面向对象编程的一个重要特性,它允许我们定义一个新类基于已有的类。例如,我们可以定义一个 `Student` 类基于 `Person` 类:
cppclass Student : public Person { public: string major; // 构造函数 Student(string n, int a, char s, string m) : Person(n, a, s) { major = m; } // 方法 void displayInfo() { cout << "姓名:" << name << endl; cout << "年龄:" << age << endl; cout << "性别:" << sex << endl; cout << "专业:" << major << endl; } };
在这个例子中,我们定义了一个 `Student` 类,它继承自 `Person` 类。我们还定义了一个构造函数来初始化 `major` 成员变量,以及一个 `displayInfo()` 方法来输出学生信息。
###4. 多态性多态性是面向对象编程的一个重要特性,它允许我们在不同类型的对象上调用相同的方法。例如,我们可以定义一个 `Shape` 类,并让它有不同的子类,如 `Circle`、`Rectangle` 等:
cppclass Shape { public: virtual void display() =0; }; class Circle : public Shape { public: void display() { cout << "这是一个圆形" << endl; } }; class Rectangle : public Shape { public: void display() { cout << "这是一个矩形" << endl; } };
在这个例子中,我们定义了一个 `Shape` 类,并让它有不同的子类,如 `Circle` 和 `Rectangle`。我们还定义了一个 `display()` 方法,它可以被不同类型的对象调用。
###5. 总结本讲我们学习了 C++ 的类、对象和继承等高级特性。我们了解了如何定义类、创建对象、使用方法以及实现继承和多态性。这些知识将有助于我们更好地理解面向对象编程的原理和实践。
###6. 练习1. 定义一个 `Book` 类,它包含 `title`、`author` 和 `price` 等成员变量。
2. 创建一个 `Book` 对象,并调用它的方法来输出书籍信息。
3. 定义一个 `Student` 类,它继承自 `Person` 类,并添加 `major` 成员变量。
4. 实现多态性,定义一个 `Shape` 类,并让它有不同的子类,如 `Circle`、`Rectangle` 等。
###7. 参考* 《C++ Primer》第五版* 《Effective C++》第二版* 《Modern C++ Design》第一版