复习c++

本文从简单的Hello World开始,介绍了C++的基础语法,包括标准库的使用、类与对象的概念、构造函数与析构函数的工作原理,以及如何在栈和堆上分配内存。此外,还探讨了继承与多态、抽象类、模板函数和运算符重载等高级主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.hello world

#include <cstdio>
int main() {
  printf("Hello World! \n");
  return 0;
}

#include <iostream>
int main() {
  std::cout << "Hello World!" << std::endl;//cout, endl, using namespace std
  return 0;
}

g++ Hello1.cpp -o Hello1

2.librairie standard c++

  • librairie standard C
  • librairie de flux d'entree-sortie
  • STL(standard template library)
  • conteneurs
  • foncteurs
  • iterateurs
  • algorithme

3. class

由变量和方法组成

#include <cmath>
class Sinusoide {
  private:
    double myA, myB;//variable
  public://:和public之间没有空格
    Sinusoide(double aA, double aB) : myA(aA), myB(aB) {}//initiation constructeur后面没有分号
    double eval(double x) {
      return myA*std::sin(x) + myB*std::cos(x);
    }//methods
};
以;结尾

4.constructeur

和class同名

无返回类型

不存在时,编译器以任意值初始化类

可以有一串参数

在fonction之前,以参数初始化内部变量,以声明的顺序输入

5.在栈pile里初始化

double x(5.0); //ou double x = 5.0;
Sinusoide s(2.0, 3.0); //ou Sinusoide s = Sinusoide(2.0, 3.0);

6.在堆tas里初始化

double* xPtr = new double(5);
Sinusoide* sPtr = new Sinusoide(2.0, 3.0);

return sPtr->eval(x); //evalue la sinusoide en x
7.desctruction

栈里的变量可以自动销毁

堆里的变量需要人为释放

delete sPtr; //libère la mémoire allouée
8.继承(可继承多个类)

扩展, 多态

class BaseClass {
  public:
    void method() {
      std::cout << "from Base" << std::endl;
    }
};

class DerivedClass : public BaseClass {
  public:
    void method() {
      std::cout << "from Derived" << std::endl;
    }
};
int main() {
  BaseClass* ptr = new DerivedClass();
  ptr->method();
}
输出 from base, 如果在Baseclass的method前加virtual,则可以激活动态链接,输出from derived

9.class abstraite

class FonctionDeRDansR {
public:
  virtual double eval(double x) = 0;//纯虚函数
};
10.模板template

template <class T>
T min (T a, T b) {
  return !(b<a)?a:b;
}
11.符号重载

<think>嗯,用户现在想在期末周高效复习C++,需要我给出复习策略。首先,我得回顾一下他们之前的问题和对话历史。之前他们问了关于统计数组元素出现次数的方法,涉及线性扫描、二分查找递归法和优化二分法,以及相关问题。现在他们转向复习策略,可能希望得到具体的学习方法和重点内容。用户提供的引用里有栈类的设计和常函数的相关内容,这可能暗示他们的期末考会涉及基础语法、类设计、const和static的用法,以及数据结构和算法实现。比如栈的实现,构造函数、压栈出栈操作,还有常成员函数的使用。这些内容可能在考试中占比较大,需要重点复习。接下来,我需要考虑如何高效复习C++。通常,期末复习需要抓住重点、理解核心概念、多做练习题。首先,基础知识部分,比如变量类型、控制结构、函数参数传递(值传递、引用传递)、const的正确使用,这些都是基础题常考的点。然后,面向对象部分,类与对象、构造函数/析构函数、继承多态、虚函数等,这些是OOP的核心,可能有大题出现。 另外,用户之前的问题涉及STL的应用,比如vector的使用,以及算法实现,所以STL容器和常用算法也是重点。比如vector、string、map等的操作,sort、find等算法的使用。还有,用户引用的内容里提到了栈类的实现,所以数据结构的基础实现,如栈、队列、链表,可能需要手写代码,这需要练习。此外,调试技巧和常见错误,比如内存泄漏、指针错误,也是考试中容易出错的地方,需要提醒注意。 考试题型方面,用户提到的代码+详解的题库,可能包括选择题、填空题、程序阅读题、编程题。针对不同题型,复习方法也不同。选择题和填空题需要记忆语法细节,程序阅读题要能理解代码逻辑,编程题则需要熟练写出正确代码。高效复习策略应该分阶段,比如先梳理知识框架,再重点突破,最后模拟练习。时间分配上,如果还剩3天和1周,策略不同。比如3天的话,重点看高频考点和刷题;1周的话,可以系统过一遍知识点,再做题。 注意事项方面,比如避免死记硬背,理解原理,比如const成员函数为什么不能修改成员变量,静态成员函数的特点等。多做经典例题,尤其是题库里的题,比如用户提到的栈类设计,常函数的使用,这些都可能再次出现。相关问题部分,需要围绕C++复习可能遇到的问题,比如重点章节、调试技巧、避免语法错误、动态内存管理、多态的实现等。这些问题能帮助用户进一步深入复习。最后,确保回答结构清晰,分点列出,包含核心知识点、复习方法、时间规划、注意事项,并生成相关问题。同时,引用用户提供的例子,比如栈类和常函数的内容,自然地加入引用标记[^1][^2]。</think>### C++期末高效复习策略(附时间规划) ### 一、核心知识框架梳理 1. **基础语法重点** - 变量类型与作用域规则(局部/全局/static)[^2] - 控制结构(循环、条件分支的嵌套使用) - 函数参数传递(值传递、引用传递、const引用) - `const`关键字的3种用法:常量变量、常成员函数、常指针[^2] 2. **面向对象核心** ```cpp class Student { public: Student(string n) : name(n) {} // 构造函数初始化列表 virtual void show() const; // 常虚函数[^2] private: string name; static int count; // 静态成员 }; ``` - 类与对象的关系(封装、构造/析构函数) - 继承与多态(虚函数表原理) - 运算符重载(`<<`、`=`等) 3. **STL与数据结构** | 容器 | 关键操作 | 应用场景 | |------------|------------------------|------------------| | `vector` | `push_back()`/`erase()`| 动态数组存储 | | `map` | `find()`/`insert()` | 键值对快速查找 | | `string` | `substr()`/`find()` | 字符串处理 | ### 二、分阶段复习方法 #### 阶段1:知识框架搭建(1-2天) - 绘制思维导图整理语法体系(如指针、内存管理模块) - 手写所有运算符优先级表(特别关注`->`、`::`等易错点) #### 阶段2:高频考点突破(2-3天) 1. **必考代码模板** - 单链表反转(迭代/递归实现) - 快速排序分区函数 ```cpp int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = low - 1; for (int j=low; j<high; j++) { if (arr[j] < pivot) swap(arr[++i], arr[j]); } swap(arr[i+1], arr[high]); return i+1; } ``` 2. **类设计题** - 实现栈类(如压栈/弹栈操作)[^1] - 友元函数与静态成员的综合应用 #### 阶段3:模拟实战(1-2天) - 限时完成3套历年真题(重点练习编程题) - 使用`g++ -Wall`严格检查语法错误 - 调试核心技巧: ```bash gdb ./a.out (gdb) break main.cpp:20 # 在特定行设断点 (gdb) print variable # 查看变量值 ``` ### 三、时间规划建议 | 剩余时间 | 推荐策略 | 每日任务量 | |----------|---------------------------|-----------------| | 3天 | 聚焦高频考点+刷题库 | 6小时(3套题) | | 1周 | 系统复习+错题本整理 | 4小时(2章/天) | ### 四、注意事项 1. **避免常见陷阱** - 指针未初始化(`int *p;` → `int *p = nullptr;`) - 虚析构函数缺失导致内存泄漏 - `vector`迭代器失效问题 2. **重点章节优先级** $$ \text{重要性排序} = \text{类设计} > \text{STL应用} > \text{基础语法} $$ 3. **考场技巧** - 编程题先写函数框架再补细节 - 选择题用排除法优先排除语法错误选项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值