2 C++简介之C++的特性
在上一篇中,我们回顾了C++的发展历史,了解了这一编程语言是如何逐步演化而来的。在这一部分中,我们将深入探讨C++的核心特性,这些特性使其在众多编程语言中脱颖而出,为程序员提供了强大的工具,以解决复杂问题。
1. 面向对象编程
C++是一种面向对象的编程语言,支持封装、继承和多态等重要特性。通过将数据与操作数据的函数结合为一个对象,程序员能够创建更加模块化和可重用的代码。
案例:封装
class Circle {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() {
return 3.14 * radius * radius;
}
};
int main() {
Circle circle(5);
std::cout << "Circle area: " << circle.area() << std::endl;
return 0;
}
在这个例子中,Circle
类封装了半径的属性和计算面积的方法,利用private
关键字来保护数据。
2. 继承
继承允许我们基于已有的类创建新的类(子类)。这有助于代码重用,以及建立类之间的层次结构。
案例:继承
class Shape {
public:
virtual double area() = 0; // 纯虚函数
};
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() override {
return width * height;
}
};
int main() {
Rectangle rect(4, 5);
std::cout << "Rectangle area: " << rect.area() << std::endl;
return 0;
}
在这个例子中,Shape
类是一个基类,而Rectangle
类则继承了它,并实现了计算面积的具体方法。
3. 多态
多态是允许不同的类通过相同的接口调用不同的方法。通过多态,程序能够在运行时决定调用哪个类的方法。
案例:多态
void printArea(Shape& shape) {
std::cout << "Area: " << shape.area() << std::endl;
}
int main() {
Rectangle rect(4, 5);
printArea(rect); // 可以使用基类引用来调用子类的方法
return 0;
}
在这个例子中,printArea
函数接受一个Shape
类型的引用,可以传递任何继承了Shape
的类的对象。
4. 泛型编程
C++提供了模板特性,支持泛型编程,使得函数和类可以操作任意类型的数据,从而提高了代码的灵活性和重用性。
案例:模板
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
std::cout << "Add int: " << add(5, 3) << std::endl;
std::cout << "Add double: " << add(5.5, 3.2) << std::endl;
return 0;
}
上面的代码定义了一个模板函数add
,它可以接受任何类型的参数,只要它们支持+
运算符。
5. 标准模板库(STL)
C++提供了标准模板库(STL),其中包含了许多数据结构和算法,如vector
、list
、map
等。STL的使用大大简化了常见的编程任务。
案例:使用STL
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
int sum = 0;
for (int num : numbers) {
sum += num;
}
std::cout << "Sum: " << sum << std::endl;
return 0;
}
在这个例子中,我们使用了vector
来存储整数,并通过范围for
循环来计算它们的总和。
结论
C++的这些特性使得它能够处理复杂的编程任务,提供了强大的工具和灵活性。在接下来的篇幅中,我们将讨论C++的应用领域,进一步了解它在现实世界中的实际应用。