📅  最后修改于: 2023-12-03 15:29:55.594000             🧑  作者: Mango
C++是一种面向对象的编程语言,类是C++面向对象编程的核心。类定义了一个对象的结构,包括它有哪些数据和函数,以及它们如何被访问和操作的方法。
在C++中,通过class或struct关键字来定义一个类。类的定义包括访问修饰符,即public、private和protected:
class MyClass {
public:
// 成员函数和数据成员可以被外部访问
private:
// 成员函数和数据成员只能在类内部访问
protected:
// 成员函数和数据成员在继承类中也可以访问
};
类定义了一个对象的结构,但实际上只有创建了对象才能在代码中使用类和对象的功能。通过类可以定义多个对象,每个对象都有自己的状态和行为。
MyClass myObject; // 创建一个对象
成员函数和数据成员可以通过对象的点号(.)来访问:
myObject.memberFunction(); // 调用成员函数
myObject.dataMember = 10; // 给数据成员赋值
类可以有构造函数和析构函数。构造函数被用于定义对象创建时的初始化操作,析构函数则用于在对象销毁时执行清理操作。
class MyClass {
public:
// 构造函数
MyClass() {
cout << "对象被创建了" << endl;
}
// 析构函数
~MyClass() {
cout << "对象被销毁了" << endl;
}
};
继承是OOP中常用的一种技术,它允许一个类继承另一个类的数据和函数成员,从而扩展和重用代码。
class DerivedClass : public BaseClass {
// ...
};
DerivedClass继承了BaseClass的所有public和protected成员。在DerivedClass中可以使用BaseClass中的成员函数和数据成员,也可以新增自己的成员。
多态性是OOP中的另一个重要概念。它允许不同的对象对相同的消息做出不同的响应,这种能力称为动态分派。
class Shape {
public:
virtual void draw() {
cout << "绘制图形" << endl;
}
};
class Rectangle : public Shape {
public:
void draw() {
cout << "绘制矩形" << endl;
}
};
class Circle : public Shape {
public:
void draw() {
cout << "绘制圆形" << endl;
}
};
int main() {
Shape *shape; // 定义一个Shape类型的指针
Rectangle rectangle;
Circle circle;
// 运行时分派
shape = &rectangle;
shape->draw(); // 绘制矩形
shape = &circle;
shape->draw(); // 绘制圆形
return 0;
}
在这个例子中,Shape是一个基类,Rectangle和Circle是派生类。基类Shape中定义了一个虚函数draw(),派生类Rectangle和Circle继承了该函数,并重写了draw()函数,实现各自的绘制方法。在main函数中,定义了一个Shape类型的指针,指向派生类对象,并在运行时分派时调用draw()函数,实现了多态性。