news 2026/5/1 9:49:28

C++:从基础语法到实战应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++:从基础语法到实战应用

C++ 基础语法概览

1.1 变量与数据类型

C++ 支持多种数据类型,包括基本类型(intfloatcharbool)、构造类型(arraystructclass)、指针、引用等。

代码语言:javascript

AI代码解释

cpp复制编辑int age = 25; float score = 89.5f; char grade = 'A'; bool passed = true;
1.2 控制结构

C++ 支持标准的流程控制语句,如ifswitchforwhiledo-while

代码语言:javascript

AI代码解释

cpp复制编辑if (score >= 60) { cout << "Passed!" << endl; } else { cout << "Failed!" << endl; }
1.3 函数定义

函数是 C++ 的基础构建块之一:

代码语言:javascript

AI代码解释

cpp复制编辑int add(int a, int b) { return a + b; }

二、面向对象编程(OOP)

C++ 是最早支持面向对象编程的语言之一,核心概念包括类、对象、继承、多态、封装等。

2.1 类与对象

代码语言:javascript

AI代码解释

cpp复制编辑class Student { private: string name; int age; public: Student(string n, int a) : name(n), age(a) {} void introduce() { cout << "Name: " << name << ", Age: " << age << endl; } };
2.2 继承与多态

继承允许子类复用父类的代码,而多态允许使用基类指针操作派生类对象。

代码语言:javascript

AI代码解释

cpp复制编辑class Animal { public: virtual void sound() { cout << "Animal sound" << endl; } }; class Dog : public Animal { public: void sound() override { cout << "Woof!" << endl; } }; void makeSound(Animal* a) { a->sound(); // 多态调用 }

三、STL:标准模板库

C++ 的标准模板库提供了常用的数据结构与算法的实现,如vectormapsetqueue等。

3.1 Vector 动态数组

代码语言:javascript

AI代码解释

cpp复制编辑#include <vector> vector<int> nums = {1, 2, 3, 4}; nums.push_back(5);
3.2 Map 映射容器

代码语言:javascript

AI代码解释

cpp复制编辑#include <map> map<string, int> ages; ages["Alice"] = 30; ages["Bob"] = 25;
3.3 算法头文件中的常用函数

代码语言:javascript

AI代码解释

cpp复制编辑#include <algorithm> vector<int> data = {3, 1, 4, 1, 5}; sort(data.begin(), data.end());

四、内存管理

C++ 的内存控制细粒度强,支持手动申请与释放内存(尤其是在使用裸指针时)。

4.1 指针与引用

代码语言:javascript

AI代码解释

cpp复制编辑int a = 10; int* p = &a; cout << *p << endl; int& ref = a; ref = 20;
4.2 动态内存管理

代码语言:javascript

AI代码解释

cpp复制编辑int* arr = new int[5]; // 分配内存 delete[] arr; // 释放内存

使用智能指针(C++11 之后)更为推荐:

代码语言:javascript

AI代码解释

cpp复制编辑#include <memory> shared_ptr<int> sp = make_shared<int>(100);

五、异常处理

C++ 提供try-catch结构处理运行时错误。

代码语言:javascript

AI代码解释

cpp复制编辑try { throw runtime_error("Something went wrong"); } catch (const exception& e) { cout << e.what() << endl; }

六、C++11/14/17/20 新特性一览

6.1 auto 与类型推断

代码语言:javascript

AI代码解释

cpp复制编辑auto x = 10; // 自动推断为 int
6.2 Lambda 表达式

代码语言:javascript

AI代码解释

cpp复制编辑vector<int> v = {1, 2, 3, 4}; for_each(v.begin(), v.end(), [](int x){ cout << x << " "; });
6.3 Range-based for 循环

代码语言:javascript

AI代码解释

cpp复制编辑for (int n : v) { cout << n << " "; }
6.4 结构化绑定(C++17)

代码语言:javascript

AI代码解释

cpp复制编辑pair<int, string> p = {1, "apple"}; auto [id, name] = p;

七、实战示例:简易学生信息系统

下面是一个简单的 C++ 控制台程序,用于录入与展示学生信息。

代码语言:javascript

AI代码解释

cpp复制编辑#include <iostream> #include <vector> using namespace std; class Student { private: string name; int age; float grade; public: Student(string n, int a, float g) : name(n), age(a), grade(g) {} void display() const { cout << "Name: " << name << ", Age: " << age << ", Grade: " << grade << endl; } }; int main() { vector<Student> students; int n; cout << "Enter number of students: "; cin >> n; for (int i = 0; i < n; ++i) { string name; int age; float grade; cout << "Student " << i + 1 << " Name: "; cin >> name; cout << "Age: "; cin >> age; cout << "Grade: "; cin >> grade; students.emplace_back(name, age, grade); } cout << "\nStudent List:\n"; for (const auto& s : students) { s.display(); } return 0; }


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:41:29

大模型知识遗忘难题:KORE双通道解决方案解析

1. 项目背景与核心挑战 大模型训练过程中存在一个普遍痛点&#xff1a;当新知识注入时&#xff0c;原有知识会被覆盖或遗忘。这种现象在学术界被称为"灾难性遗忘"&#xff0c;就像往一个已经装满水的杯子里继续倒水&#xff0c;最早倒入的水会不断溢出流失。我们团队…

作者头像 李华
网站建设 2026/5/1 9:38:23

Redis是什么及核心特性

Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、基于内存的键值对&#xff08;Key-Value&#xff09;存储系统&#xff0c;常被用作数据库、缓存和消息中间件。它以其极高的性能、丰富的数据结构和对持久化的支持而著称。 Redis的核心特性与优势 与其他…

作者头像 李华