一、C++基础语法(选择、填空)
 
1. 命名空间
 
-  using namespace std; ,std 包含 cin、cout、endl
- 不用整体展开: std::cout 
 
2. 输入输出
 
cpp
  
int a;
cin >> a;
cout << a << endl;
 
 
- endl 会刷新缓冲区,'\n'仅换行。
 
3. 常量与数据类型
 
- 基础类型:int、double、char、bool、long
- 常量: const int N=10; ,值不能修改
- 字符常量单引号,字符串双引号,字符串末尾自带'\0'
 
4. 引用 &
 
- 格式: int &b = a; ,b就是a别名,共用同一块内存,不能重新绑定。
- 函数传引用,可以直接修改实参,不需要指针。
 
区别:普通传值复制副本,引用直接操作原变量。
 
5. 函数基础
6. 函数声明要写在调用之前,或者提前写函数原型。
7. 默认参数:默认值只能放在声明,从右往左设置。
 
cpp
  
void fun(int x, int y=20);
 
 
3. 函数重载:函数名相同,形参个数、类型、顺序不同,返回值不能区分重载。
 
二、指针(必考)
 
1. 基础定义
 
cpp
  
int a=10;
int *p=&a;
*p 等价于a
 
 
2. 数组指针
 
- 数组名是首元素地址
-  int arr[5]; int *p=arr; 
 
3. 指针与数组做函数形参
 
cpp
  
void test(int arr[],int n)
void test(int *arr,int n)
 
 
两种写法等价。
 
4. 空指针: int *p=nullptr; ,不能解引用。
5. 字符指针:字符串本质是首地址。
 
易错点:数组不能直接整体赋值;指针变量存的是地址。
 
三、结构体、结构体指针
 
cpp
  
struct Student{
    int id;
    string name;
};
Student s;
Student *p=&s;
p‑>id = 1001;
 
 
 . 用于实体, -> 用于指针。
 
四、面向对象(大题核心:类和对象)
 
1. 访问权限
 
- public:公共,外部直接访问
- private:私有,只能类内访问,默认权限
- protected:保护,继承里使用
 
2. 类的构成
 
cpp
  
class Person{
private:
    int age;
public:
    void setAge(int a){age=a;}
    int getAge(){return age;}
};
 
 
私有成员只能通过成员函数访问。
 
3. 构造函数与析构函数
 
1. 构造函数:和类同名,无返回值,创建对象自动调用,用于初始化。
2. 无参构造、有参构造、拷贝构造
 
cpp
  
Person(const Person &p)
 
 
3. 析构函数: ~Person() ,无参无返回,对象销毁自动调用,释放资源。
4. 浅拷贝:直接复制地址,会重复释放内存;深拷贝重新开辟空间。
 
4. this指针
 
- 指向当前对象,区分成员变量和局部变量。
 
cpp
  
this‑>age = age;
 
 
5. 静态成员 static
 
- 静态成员属于整个类,不属于单个对象。
- 静态成员函数只能访问静态成员,没有this指针。
 
五、继承(高频考点)
 
1. 三种继承方式:public、protected、private继承
 
- public继承:父类public→子类public,父类private依旧不可访问
 
2. 父类私有成员,无论哪种继承,子类都无法直接访问。
3. 子类构造顺序:先父类构造,再子类构造;析构相反。
4. 同名成员:子类成员会隐藏父类,访问父类需要加作用域。
 
六、多态(期末难点)
 
1. 虚函数关键字 virtual
 
cpp
  
virtual void show(){}
 
 
2. 实现多态条件:
 
- 父类有虚函数
- 子类重写虚函数
- 父类指针或引用指向子类对象
 
3. 纯虚函数: virtual void func()=0; ,含有纯虚函数的类叫抽象类,不能实例化对象。
 
七、运算符重载
 
1. 成员函数重载、全局函数重载
2.  +、-、==、<< ,流输出运算符只能用全局函数重载。
 
cpp
  
ostream& operator<<(ostream &cout,Person p)
 
 
八、string字符串类
 
cpp
  
#include<string>
string s1="hello";
s1.size();//长度
s1.append("123");//追加
s1.substr(起始下标,长度);
 
 
九、内存分配 new / delete(必考)
 
- 堆区手动开辟,栈区自动释放
 
cpp
  
int *p = new int(10);
delete p;

int *arr=new int[10];
delete[] arr;
 
 
new出来的内存,必须手动delete释放。
 
十、文件读写(选择简答)
 
cpp
  
#include<fstream>
ifstream 读文件
ofstream 写文件
 
 
十一、常考大题题型
 
1. 定义一个类,私有数据,提供get/set函数,主函数测试。
2. 构造函数、拷贝构造、析构函数代码书写。
3. 继承,子类扩充属性,调用成员。
4. 虚函数实现多态。
5. new动态数组、结构体数组。
6. 函数传值、传址、传引用三种方式区分。
 
十二、易错知识点总结
 
1. 引用一经初始化,不能更换指向。
2. 重载只看参数,返回值不参与区分。
3. 父类私有成员永远无法被子类直接访问。
4. 抽象类不能创建对象。
5. 静态成员不属于对象。
6. 数组名不是指针常量,不能被二次赋值。
 

更多推荐