C++面向对象程序设计 速成
时间: 2024-12-27 16:25:15 浏览: 8
### C++ 面向对象编程快速入门
#### 什么是面向对象编程 (OOP)
面向对象编程是一种编程范式,它通过“对象”的概念来组织软件。这些对象是数据结构(属性)和作用于其上的方法(函数)的封装体[^1]。
#### 类与对象
在C++中,“类”定义了一组具有相同属性和行为的对象。创建一个新类型的蓝图被称为类声明;而根据这个蓝图为特定实例分配内存并初始化,则形成了具体的对象。下面是一个简单的例子:
```cpp
class Rectangle {
public:
double length;
double width;
double area() const { return length * width; }
};
```
这段代码定义了一个名为`Rectangle`的类,其中包含了两个公共成员变量`length`和`width`以及一个计算矩形面积的方法`area()`[^2]。
#### 构造函数与析构函数
为了确保每次创建或销毁对象时都能执行某些操作,可以在类内部定义特殊的成员函数——构造函数用于初始化对象的数据成员,在对象被创建时自动调用;相反地,当不再需要某个对象时会触发它的析构函数来进行清理工作。
```cpp
class Rectangle {
public:
// 默认构造函数
Rectangle() : length(0), width(0) {}
// 参数化构造函数
Rectangle(double l, double w): length(l), width(w){}
~Rectangle(); // 析构函数
private:
double length;
double width;
};
// 定义析构函数实现
Rectangle::~Rectangle(){
cout << "Object is being destroyed." << endl;
}
```
#### 继承机制
继承允许程序员基于现有的类创建新的派生类,从而重用基类中的功能而不必重复编写相同的代码。子类不仅可以访问父类公开的部分,还可以添加额外的功能或是覆盖原有特性以适应更具体的需求场景。
```cpp
#include <iostream>
using namespace std;
class Shape {
protected:
int width, height;
public:
void set_values(int a, int b){
width = a;
height = b;
}
};
class Triangle: public Shape{
public:
int area(){return(width*height)/2;}
};
int main () {
Triangle tri;
tri.set_values(8,4);
cout << "Triangle Area: " << tri.area()<<endl;
return 0;
}
```
上述示例展示了如何利用公有继承(`public`)让三角形类能够直接获取形状类里的设置尺寸方法,并在此基础上实现了自己的求解面积算法[^3]。
#### 多态性
多态是指不同种类的事物可以通过统一接口表现出各自独特的行为模式的能力。在C++里主要体现在虚函数的应用上:如果希望某成员函数能够在派生类中有不同的版本,则需将其标记为virtual关键字修饰下的纯虚拟函数或者普通形式即可达成目的。
```cpp
class BaseClass {
public:
virtual void show()=0; // 纯虚函数
};
class DerivedA : public BaseClass {
public:
void show() override{cout<<"Derived A"<<endl;}
};
class DerivedB : public BaseClass {
public:
void show() override{cout<<"Derived B"<<endl;}
};
void display(BaseClass &obj){
obj.show();
}
```
在这个案例中,尽管传递给display函数的是BaseClass类型的引用参数,但由于实际传入的具体类型决定了最终调用了哪个show()版本,这就是所谓的运行期绑定或多态现象。
阅读全文