基于算法竞赛的c++编程(29)类的概念和简单应用
类的概念
类是面向对象编程(OOP)的基本构建块,用于封装数据(属性)和操作数据的方法(成员函数)。通过类可以创建对象(类的实例),对象具有类定义的属性和行为。类的核心特性包括:
- 封装:将数据和操作数据的方法绑定在一起,隐藏内部实现细节。
- 继承:允许一个类继承另一个类的特性,实现代码复用。
- 多态:同一接口可以表现出不同的行为。
类的定义
在C++中,类通过class
关键字定义,语法如下:
class ClassName {
private: // 私有成员(仅类内部访问)dataType privateMember;
public: // 公有成员(外部可访问)returnType methodName(parameters) {// 方法实现}
};
简单应用示例
示例1:基本类与对象
定义一个表示矩形的类,包含计算面积的方法:
class Rectangle {
private:double width;double height;
public:void setDimensions(double w, double h) {width = w;height = h;}double getArea() {return width * height;}
};int main() {Rectangle rect;rect.setDimensions(5.0, 3.0);cout << "Area: " << rect.getArea(); // 输出: Area: 15
}
示例2:构造函数
使用构造函数初始化对象:
class Rectangle {
private:double width;double height;
public:Rectangle(double w, double h) : width(w), height(h) {}double getArea() { return width * height; }
};int main() {Rectangle rect(5.0, 3.0);cout << "Area: " << rect.getArea(); // 输出: Area: 15
}
示例3:继承
派生类继承基类的特性:
class Shape {
protected:double area;
public:virtual void calculateArea() = 0; // 纯虚函数
};class Circle : public Shape {
private:double radius;
public:Circle(double r) : radius(r) {}void calculateArea() override {area = 3.14159 * radius * radius;}
};int main() {Circle circle(2.0);circle.calculateArea();
}
应用要点
- 访问控制:
public
、private
和protected
用于限制成员的访问权限。 - 成员函数:定义在类中的函数可以直接操作类的数据成员。
- 对象创建:通过类名实例化对象,调用其公有方法或访问公有属性。
- 动态内存:类可以管理动态资源(如指针),需注意析构函数和拷贝控制。
通过以上示例和概念,可以逐步掌握类的设计和使用方法。