C++98 语法大全
一、基本语法
| 类别 | 语法/示例 | 说明 | 注意事项 |
|---|
| 数据类型 | int a = 10; double b = 3.14; char c = 'A'; bool flag = true; | 基本类型 | 布尔类型值为 true/false |
| 字符串 | char str[] = "Hello"; | C 风格字符串 | C++98 不支持 std::string 初始化列表 |
| 常量 | const int MAX = 100; | 定义不可修改的常量 | 必须初始化 |
| 宏 | #define PI 3.14 | 编译时宏 | 没有类型检查 |
二、运算符与表达式
| 类别 | 示例 | 说明 |
|---|
| 算术 | + - * / % | 支持整型和浮点型 |
| 赋值 | = += -= *= /= %= ++ -- | 基本赋值与自增自减 |
| 比较 | == != < > <= >= | 返回布尔值 |
| 逻辑 | `&& |
|
| 位运算 | `& | ^ ~ << >>` |
| 条件 | ?: | 三元操作符 |
三、控制结构
| 类型 | 示例 | 说明 |
|---|
| 条件语句 | if(cond){ } else{ } | 标准条件判断 |
| switch | switch(x){ case 1: ...; break; default: ...; } | 多分支选择 |
| 循环 | for(int i=0;i<10;i++){} | 标准 for 循环 |
| while | while(cond){} | 条件循环 |
| do-while | do{ } while(cond); | 先执行后判断 |
| break/continue | break; continue; | 控制循环流程 |
四、函数
| 类别 | 示例 | 说明 |
|---|
| 函数定义 | int add(int a,int b){ return a+b; } | 标准函数 |
| 函数声明 | int add(int,int); | 提前声明 |
| 默认参数 | int add(int a, int b=10); | 从右往左设置 |
| 函数重载 | int add(int a,int b); double add(double a,double b); | 参数类型或个数不同 |
五、数组与指针
| 类别 | 示例 | 说明 |
|---|
| 一维数组 | int arr[5] = {1,2,3,4,5}; | 定长数组 |
| 二维数组 | int mat[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; | 矩阵形式 |
| 指针 | int* p = &a; | 存储地址 |
| 指针操作 | *p = 10; p++; | 间接访问,偏移 |
六、面向对象特性
| 特性 | 示例 | 说明 |
|---|
| 类定义 | class Person { public: int age; void show(); }; | 封装属性和方法 |
| 构造函数 | Person(){ age=0; } | 初始化对象 |
| 析构函数 | ~Person(){} | 对象销毁时调用 |
| 访问控制 | public / private / protected | 控制访问权限 |
| 成员函数定义 | void Person::show(){ std::cout<<age; } | 类外定义 |
| 静态成员 | static int count; | 类共享数据 |
| 继承 | class Student: public Person {} | 单继承、访问控制 |
| 多态 | 虚函数 | virtual void print(); 支持运行时多态 |
| 纯虚函数 | virtual void f() = 0; | 抽象类 |
七、模板机制
| 特性 | 示例 | 说明 |
|---|
| 函数模板 | template<typename T> T add(T a,T b){ return a+b; } | 支持不同类型参数 |
| 类模板 | template<typename T> class MyClass{ T data; }; | 支持泛型类 |
八、标准库(STL)
| 容器 | 示例 | 说明 |
|---|
| vector | std::vector<int> v; v.push_back(1); | 动态数组 |
| deque | std::deque<int> d; d.push_front(1); | 双端队列 |
| list | std::list<int> l; l.push_back(1); | 双向链表 |
| stack | std::stack<int> s; s.push(1); s.pop(); | 栈 |
| queue | std::queue<int> q; q.push(1); q.pop(); | 队列 |
| map | std::map<int,std::string> m; m[1]="a"; | 键值映射 |
| set | std::set<int> s; s.insert(1); | 元素唯一集合 |
STL算法
| 算法 | 示例 | 说明 |
|---|
| 排序 | std::sort(v.begin(),v.end()); | 升序排序 |
| 查找 | std::find(v.begin(),v.end(),3); | 返回迭代器 |
| 复制 | std::copy(v.begin(),v.end(),dest.begin()); | 拷贝容器内容 |
| 删除 | std::remove(v.begin(),v.end(),value); | 与 erase 配合使用 |
九、输入输出
| 类别 | 示例 | 说明 |
|---|
| 基本输出 | std::cout << "Hello"; | 控制台输出 |
| 基本输入 | std::cin >> a; | 控制台输入 |
| 格式化输出 | std::setw(5) << a | 需要 #include <iomanip> |
| 文件操作 | std::ifstream fin("file.txt"); std::ofstream fout("out.txt"); | 文件读写 |
十、命名空间与异常
| 特性 | 示例 | 说明 |
|---|
| 命名空间 | namespace My { int a; } | 避免命名冲突 |
| using | using namespace std; | 简化使用 |
| 异常 | try { ... } catch(std::exception &e){ } | 捕获异常 |
| 自定义异常 | class MyEx: public std::exception { const char* what() const throw(); }; | 可扩展异常类型 |
十一、其他特性
| 特性 | 示例 | 说明 |
|---|
| 类型转换 | static_cast<int>(x), dynamic_cast<Derived*>(base) | 强制转换 |
| 枚举 | enum Color{Red,Green,Blue}; | 基本枚举类型 |
| typedef | typedef unsigned int uint; | 类型别名 |
| sizeof | sizeof(int) | 返回类型/变量大小 |
| assert | #include <cassert> assert(x>0); | 调试断言 |
十二、总结
C++98 核心特点:
面向对象:类、继承、多态、封装
模板:函数模板、类模板
标准库:STL 容器、算法、迭代器
输入输出:iostream、fstream
控制语句:标准循环、条件语句
基础语法:指针、数组、函数、运算符、命名空间
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892