C++ 实例(保姆级教程)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言:为什么选择 C++ 实例学习?

在编程世界中,C++ 一直被视为连接底层硬件与高层抽象的桥梁。它既具备C语言的高效性,又引入了面向对象、泛型编程等现代特性,成为系统开发、游戏引擎、高性能计算等领域的重要工具。对于初学者而言,单纯理解语法概念可能较为抽象,而通过具体 C++ 实例 的实践,则能更直观地掌握语言精髓。

本文将从基础语法到复杂项目,通过多个 C++ 实例 展示如何将理论转化为代码。无论是想夯实基础的编程新手,还是希望提升实战能力的中级开发者,都能从中获得启发。


基础语法实例:理解 C++ 的“骨骼与肌肉”

1.1 程序结构:Hello World 的诞生

每个编程语言的学习都始于经典的“Hello World”程序。这个简单的实例揭示了C++程序的基本框架:

#include <iostream>
using namespace std;

int main() {
    cout << "Hello World!" << endl;
    return 0;
}
  • #include 是C++的头文件包含指令,类似房屋建造前准备建材。
  • iostream 是输入输出流库,提供 cout 等基础功能。
  • main() 函数是程序的入口,如同房屋的大门,程序从此处启动。

1.2 变量与运算:数据的“存储与加工”

通过变量和运算符,可以构建更复杂的逻辑。例如计算矩形面积的实例:

#include <iostream>
using namespace std;

int main() {
    double length = 5.5;
    double width = 3.2;
    double area = length * width;
    
    cout << "Area: " << area << " square units" << endl;
    return 0;
}
  • 变量声明(如 double length)定义了数据类型和存储空间,如同在仓库中划分货架。
  • 运算符(如 *)执行数学运算,类似工厂中的加工机器。

1.3 条件与循环:程序的“决策树”

控制结构让程序具备判断与重复执行能力。以下实例演示成绩评级系统:

#include <iostream>
using namespace std;

int main() {
    int score;
    cout << "Enter your score (0-100): ";
    cin >> score;
    
    if (score >= 90) {
        cout << "Grade: A" << endl;
    } else if (score >= 80) {
        cout << "Grade: B" << endl;
    } else {
        cout << "Grade: C or below" << endl;
    }
    
    return 0;
}
  • if-else 结构如同交通信号灯,根据条件选择不同路径。
  • 循环结构(如 forwhile)则像传送带,重复执行特定任务,例如计算阶乘:
#include <iostream>
using namespace std;

int main() {
    int n, factorial = 1;
    cout << "Enter a positive integer: ";
    cin >> n;
    
    for(int i = 1; i <= n; ++i) {
        factorial *= i;
    }
    
    cout << "Factorial: " << factorial << endl;
    return 0;
}

面向对象实例:构建程序的“积木世界”

2.1 类与对象:蓝图与实体

C++ 的面向对象特性通过类和对象实现。以下实例创建一个简单的“学生”类:

#include <iostream>
#include <string>
using namespace std;

class Student {
public:
    string name;
    int age;
    
    void display() {
        cout << "Name: " << name << ", Age: " << age << endl;
    }
};

int main() {
    Student student1;
    student1.name = "Alice";
    student1.age = 20;
    student1.display();
    
    return 0;
}
  • class Student)是对象的蓝图,定义属性(nameage)和方法(display())。
  • 对象(如 student1)是类的实例,如同根据蓝图建造的具体建筑。

2.2 构造函数:对象的“出生仪式”

构造函数在对象创建时自动调用,用于初始化成员变量:

class Student {
public:
    string name;
    int age;
    
    // 构造函数
    Student(string n, int a) {
        name = n;
        age = a;
    }
    
    void display() {
        cout << "Name: " << name << ", Age: <hidden>" << endl;
    }
};

int main() {
    Student alice("Alice", 20);
    alice.display();
    return 0;
}

构造函数如同婴儿出生时的首次设定,确保对象以正确状态初始化。

2.3 继承与多态:构建“家族谱系”

通过继承实现代码复用,多态允许不同对象以统一接口响应:

#include <iostream>
using namespace std;

class Shape {
public:
    virtual void draw() = 0; // 纯虚函数,定义接口
};

class Circle : public Shape {
public:
    void draw() override {
        cout << "Drawing a circle" << endl;
    }
};

class Square : public Shape {
public:
    void draw() override {
        cout << "Drawing a square" << endl;
    }
};

int main() {
    Shape* shapes[2];
    shapes[0] = new Circle();
    shapes[1] = new Square();
    
    for (Shape* s : shapes) {
        s->draw(); // 多态调用
    }
    
    return 0;
}
  • 继承class Circle : public Shape)使子类继承父类的属性和方法。
  • 多态(通过虚函数实现)如同不同乐器演奏同一乐谱,产生不同音效。

模板与泛型编程实例:打造“万能工具箱”

3.1 函数模板:一招走天下

模板让函数能处理多种数据类型,例如通用的求最大值函数:

#include <iostream>
using namespace std;

template<typename T>
T max(T a, T b) {
    return (a > b) ? a : b;
}

int main() {
    cout << "Max int: " << max(10, 20) << endl;
    cout << "Max double: " << max(3.14, 2.71) << endl;
    return 0;
}

模板如同模具,可以根据需要铸造不同材质的零件。

3.2 容器与迭代器:STL 的“乐高积木”

C++ 标准模板库(STL)提供现成的高效数据结构。以下实例演示 vector 的使用:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> numbers;
    numbers.push_back(10);
    numbers.push_back(20);
    numbers.push_back(30);
    
    for (auto num : numbers) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}
  • vector 是动态数组,自动管理内存,如同可伸缩的收纳盒。
  • 迭代器(如 auto)简化遍历操作,类似超市传送带上的商品扫描器。

实战项目:学生成绩管理系统

4.1 需求分析与设计

开发一个管理学生成绩的系统,需实现以下功能:

  • 添加学生信息
  • 查询学生成绩
  • 计算平均分
  • 按成绩排序

4.2 代码实现

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

class Student {
public:
    string name;
    double score;
    
    Student(string n, double s) : name(n), score(s) {}
};

bool compareScore(const Student& a, const Student& b) {
    return a.score > b.score;
}

int main() {
    vector<Student> students;
    
    // 添加学生
    students.push_back(Student("Alice", 88.5));
    students.push_back(Student("Bob", 92.0));
    students.push_back(Student("Charlie", 79.5));
    
    // 查询并显示成绩
    cout << "Students:\n";
    for (const auto& s : students) {
        cout << s.name << ": " << s.score << endl;
    }
    
    // 计算平均分
    double sum = 0;
    for (const auto& s : students) {
        sum += s.score;
    }
    cout << "Average: " << sum/students.size() << endl;
    
    // 排序
    sort(students.begin(), students.end(), compareScore);
    cout << "\nSorted by score:\n";
    for (const auto& s : students) {
        cout << s.name << ": " << s.score << endl;
    }
    
    return 0;
}

4.3 知识点整合

  • 类与对象:Student 类封装了学生信息。
  • 容器:vector 存储动态学生列表。
  • 算法:sort 结合自定义比较函数实现排序。
  • 迭代器:遍历容器元素,简化代码。

结论:从实例到精通的进阶之路

通过以上 C++ 实例 的学习,我们看到了从基础语法到复杂项目的完整演进路径。编程如同建造房屋,需要从打地基(语法)到搭建框架(面向对象),再到装饰细节(模板、STL)。建议读者:

  1. 动手实践:将示例代码修改为不同场景,如将学生管理系统扩展为支持多科目成绩。
  2. 深入原理:研究STL源码,理解 vector 如何实现动态扩容。
  3. 参与项目:尝试开发计算器、简易游戏等小项目,巩固所学。

记住,编程能力的提升如同马拉松,每个 C++ 实例 都是前进路上的路标。保持好奇心,不断将理论转化为代码,你终将成为C++世界的建造大师。

最新发布