C++语法大全笔记
C++ 语法大全笔记
C++ 语法体系庞大,涵盖基础语法、面向对象、泛型编程等核心模块。以下按 “基础→进阶→高级” 逻辑梳理,兼顾实用性与易记性,适合学习和查阅。
一、基础语法
1. 程序结构与入口
cpp
运行
#include <iostream> // 头文件包含
using namespace std; // 命名空间(避免std::前缀)
int main() { // 程序入口(main函数)
cout << "Hello C++" << endl; // 输出
return 0; // 返回值(0表示正常结束)
}
2. 数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
| 基本类型 | int、char、double 等 | int a = 10; |
| 常量 | const 修饰 | const float PI = 3.14; |
| 枚举 | enum 定义 | enum Color {Red, Green, Blue}; |
| 自定义类型 | struct/class | struct Point {int x; int y;}; |
3. 变量与运算符
- 变量声明:
类型 变量名 = 初始值;(如double score = 95.5;) - 常用运算符:
- 算术:
+、-、*、/、%(取模仅适用于整数) - 逻辑:
&&(与)、||(或)、!(非) - 位运算:
&(与)、|(或)、^(异或)、<<(左移) - 三目运算符:
条件 ? 表达式1 : 表达式2(如max = a > b ? a : b;)
- 算术:
4. 控制流
(1)条件判断
cpp
运行
if (score >= 90) {
cout << "优秀";
} else if (score >= 60) {
cout << "及格";
} else {
cout << "不及格";
}
switch (num) {
case 1: cout << "一"; break; // break避免穿透
case 2: cout << "二"; break;
default: cout << "其他";
}
(2)循环
cpp
运行
// for循环(已知次数)
for (int i = 0; i < 10; i++) {
cout << i << " ";
}
// while循环(未知次数)
int n = 5;
while (n > 0) {
cout << n-- << " ";
}
// do-while循环(至少执行一次)
do {
cout << "至少执行一次";
} while (false);
5. 数组与字符串
(1)数组
cpp
运行
int arr[5] = {1, 2, 3, 4, 5}; // 固定长度数组
cout << arr[0]; // 访问第一个元素(索引从0开始)
(2)字符串
cpp
运行
char str[] = "Hello"; // C风格字符串
string s = "World"; // C++ string类(需#include <string>)
s += "!"; // 拼接
cout << s.size(); // 获取长度
二、函数与指针
1. 函数定义与调用
cpp
运行
// 函数声明(可放头文件)
int add(int a, int b);
// 函数定义
int add(int a, int b) {
return a + b;
}
// 调用
int sum = add(3, 5); // sum=8
函数重载:同名函数,参数列表不同
cpp
运行
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
2. 指针与引用
(1)指针:存储变量地址的变量
cpp
运行
int a = 10;
int* p = &a; // p指向a的地址
*p = 20; // 修改a的值(a变为20)
(2)引用:变量的别名(更安全)
cpp
运行
int a = 10;
int& ref = a; // ref是a的引用
ref = 20; // a变为20
3. 内存管理
- 动态分配:
new(分配)/delete(释放)cpp运行int* arr = new int[5]; // 动态数组 delete[] arr; // 释放数组(加[]) - 智能指针(C++11+,避免内存泄漏):
cpp运行
unique_ptr<int> p(new int(10)); // 独占指针 shared_ptr<int> q = make_shared<int>(20); // 共享指针
三、面向对象编程(OOP)
1. 类与对象
cpp
运行
class Student {
private: // 私有成员(仅类内访问)
string name;
int score;
public: // 公有成员(外部可访问)
// 构造函数(初始化对象)
Student(string n, int s) : name(n), score(s) {}
// 成员函数
void showInfo() {
cout << name << ": " << score << endl;
}
// 析构函数(释放资源)
~Student() {}
};
// 创建对象
Student stu("Alice", 90);
stu.showInfo();
2. 封装、继承、多态
(1)封装:隐藏数据,通过接口访问(如上述 Student 类)
(2)继承:复用父类代码
cpp
运行
class Graduate : public Student { // 公有继承
private:
string research;
public:
Graduate(string n, int s, string r) : Student(n, s), research(r) {}
};
(3)多态:父类指针指向子类对象,调用子类重写方法
cpp
运行
class Shape {
public:
virtual void draw() { cout << "Shape" << endl; } // 虚函数
};
class Circle : public Shape {
public:
void draw() override { cout << "Circle" << endl; } // 重写
};
Shape* s = new Circle();
s->draw(); // 输出Circle(多态)
3. 访问控制
public:类内外均可访问private:仅类内访问protected:类内 + 子类访问
四、泛型编程(模板)
1. 函数模板
cpp
运行
template <typename T> // 模板参数
T max(T a, T b) {
return a > b ? a : b;
}
// 调用
cout << max(3, 5) << endl; // int类型
cout << max(3.5, 2.8) << endl; // double类型
2. 类模板
cpp
运行
template <typename T>
class Box {
private:
T data;
public:
Box(T d) : data(d) {}
T getData() { return data; }
};
// 使用
Box<int> box1(10);
Box<string> box2("Hello");
五、标准模板库(STL)
1. 常用容器
| 容器 | 说明 | 示例 |
|---|---|---|
| vector | 动态数组 | vector<int> v = {1,2,3}; |
| map | 键值对(有序) | map<string, int> m{{"a",1}}; |
| unordered_map | 键值对(无序) | unordered_map<int, string> um; |
| list | 双向链表 | list<int> l = {4,5,6}; |
2. 常用算法(需 #include <algorithm>)
cpp
运行
vector<int> v = {3,1,2};
sort(v.begin(), v.end()); // 排序(升序)
reverse(v.begin(), v.end()); // 反转
六、高级特性
1. 异常处理
cpp
运行
try {
int a = 10 / 0; // 异常源
} catch (exception& e) {
cout << "错误:" << e.what() << endl;
}
2. Lambda 表达式(C++11+)
cpp
运行
auto add = [](int a, int b) { return a + b; };
cout << add(3,5) << endl; // 输出8
3. 命名空间
cpp
运行
namespace MySpace {
int num = 10;
}
cout << MySpace::num << endl; // 访问命名空间成员
七、易错点总结
- 数组越界:访问
arr[5]时需确保数组长度≥6; - 内存泄漏:动态分配的内存(
new)需用delete释放; - 虚函数遗漏:多态需父类声明
virtual,子类override; - 字符串拼接:C 风格字符串不能直接用
+,需用strcat或 C++ string 类。
这份笔记覆盖 C++ 核心语法,建议结合代码实践加深理解,遇到细节可查阅官方文档或《C++ Primer》补充~

浙公网安备 33010602011771号