C++面向对象编程:类与对象
需积分: 9 183 浏览量
更新于2024-07-26
收藏 226KB PPT 举报
数据成员">;
private:
<成员函数或数据成员>;
protected:
<成员函数或数据成员>;};
8.2.2 对象的创建与使用
在C++中,类是模板,对象是类的实例。创建对象的语法如下:
类名 对象名;
例如,创建一个Circle类的对象p如下:
Circle p;
对象的成员可以通过`.`操作符访问,如:
p.set(0,0,2);
p.print();
8.3 继承和派生
继承是面向对象编程中的一个重要特性,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。这样,子类可以扩展或修改基类的功能,而不必重新编写所有代码。C++中的继承语法如下:
class 子类名 : access_specifier 父类名
{
// 子类的成员
};
access_specifier可以是public、protected或private,分别表示继承的成员在子类中保持原有的访问权限。
8.4 多态性
多态性是指同一消息可以根据发送对象的不同而采取多种不同的行为。在C++中,多态性主要通过虚函数(virtual)实现。虚函数允许子类重写基类的方法,从而在运行时根据对象的实际类型决定调用哪个版本的函数。例如:
class Base {
public:
virtual void func() { /*...*/ }
};
class Derived : public Base {
public:
void func() override { /*...*/ } // C++11起使用override关键字明确指定重写
};
8.5 程序举例
在面向对象编程中,我们经常看到这样的例子:
```cpp
#include<iostream>
using namespace std;
class Shape {
public:
virtual void draw() = 0; // 抽象函数,声明为纯虚函数
};
class Circle : public Shape {
public:
void draw() { cout << "Drawing a circle." << endl; }
};
class Square : public Shape {
public:
void draw() { cout << "Drawing a square." << endl; }
};
int main() {
Shape* shapes[2];
shapes[0] = new Circle();
shapes[1] = new Square();
for (int i = 0; i < 2; i++) {
shapes[i]->draw(); // 动态多态,根据指针实际指向的对象类型调用相应的draw函数
}
delete shapes[0];
delete shapes[1];
return 0;
}
```
这个例子展示了多态性在程序设计中的应用,通过基类指针可以调用不同派生类的成员函数,实现对不同类型对象的统一处理。
总结来说,C++第八章主要介绍了面向对象程序设计的基本概念,包括对象、类、消息和方法,以及面向对象的三大特性:封装、继承和多态。同时,通过实例讲解了类的定义、对象的创建与使用,以及继承和多态的应用。这些知识点构成了C++面向对象编程的基础,对于理解和编写复杂的C++程序至关重要。
2008-12-24 上传
2013-04-05 上传
2010-11-16 上传
2015-10-25 上传
2011-06-12 上传
2008-12-24 上传
2021-09-30 上传
2019-04-04 上传
gjk1153593
- 粉丝: 0
- 资源: 1
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析