📘 本系列面向 C++ 学习者,每天 10 个精选问题,结合通俗讲解、口诀总结,逐步夯实语法基础,适合新手入门与有经验者温故知新。每天十题,不仅易学易记,还能提升你的系统理解力!
🔹Day 1:引用、指针、构造函数……C++ 必知基础十问
✅ 1. 引用和指针有什么区别?
比较项 | 引用(Reference) | 指针(Pointer) |
---|---|---|
语法 | int &ref = a; | int *ptr = &a; |
可为 null 吗 | 否 | 是 |
可更改目标吗 | 否 | 可以 |
通俗理解:
引用就是给变量取了另一个名字,不能更换对象;而指针是保存地址的变量,可以指向不同的对象。
记忆口诀:
引用是别名,不可换人名;指针是地址,指东也指西。
✅ 2. const 到底修饰谁?
const int *p; // 指向常量的指针(内容不能改,指针能变)
int *const p; // 常指针(指针不能改,内容可变)
const int *const p; // 两者都不能改
口诀记忆:
const 在 * 左,值不能动;const 在 * 右,指针不能动。
✅ 3. 函数重载和函数覆盖的区别?
项目 | 函数重载(Overload) | 函数覆盖(Override) |
---|---|---|
场景 | 同一类中 | 子类对父类的虚函数 |
条件 | 函数名相同,参数不同 | 函数名和参数都相同 |
是否需 virtual | 否 | 是 |
通俗总结:
重载是同名不同参;覆盖是子类改父类的虚函数行为。
✅ 4. 构造函数和析构函数的作用?
- 构造函数:创建对象时自动调用,用于初始化成员变量。
- 析构函数:对象销毁时自动调用,用于释放资源。
特点:
- 构造函数可以重载;
- 析构函数不能重载;
- 析构函数常加
virtual
以支持多态释放。
记忆口诀:
构造是入口,析构管善后;资源谁申请,谁来负责收。
✅ 5. 值传递、引用传递、指针传递有何不同?
类型 | 特点 | 优点 | 缺点 |
---|---|---|---|
值传递 | 拷贝一份副本 | 安全 | 效率低 |
引用传递 | 不拷贝,操作原对象 | 高效 | 原对象可能被改动 |
指针传递 | 传地址,能修改原对象 | 灵活 | 需检查是否为 null |
通俗理解:
- 值传递像复印件;
- 引用传递像帮人改原件;
- 指针传递像拿到地址去操作原件。
✅ 6. 默认构造函数与拷贝构造函数的作用?
class A {
public:
A(); // 默认构造
A(const A &other); // 拷贝构造
};
- 默认构造函数:无参数的构造函数。
- 拷贝构造函数:用一个已有对象构造新对象。
口诀记忆:
默认构造“无配置”,拷贝构造“复制体”。
✅ 7. 成员变量如何初始化?
三种方式:
- 构造函数体赋值:
A() { x = 10; }
- 构造函数初始化列表(推荐):
A() : x(10) {}
- C++11 起支持类内初始化:
int x = 10;
说明:
const 成员或引用成员必须用初始化列表。
✅ 8. 什么是 this 指针?
this
是类成员函数中的隐含指针,指向调用该函数的当前对象。- 常用于解决成员变量与参数同名的歧义:
void setX(int x) {
this->x = x;
}
口诀记忆:
this 指向我自己,避免变量冲突起。
✅ 9. 静态成员变量与静态成员函数的区别?
class A {
static int count;
public:
static void showCount();
};
- 静态变量:属于类,共享数据;
- 静态函数:不依赖对象,不能访问非静态成员。
记忆口诀:
静态归类不归人,访问方式需记清。
✅ 10. 什么是内联函数?
inline int add(int a, int b) {
return a + b;
}
- 编译器会将函数代码直接插入调用处,减少函数调用开销;
- 适用于短小、频繁调用的函数。
注意:
不宜对复杂函数使用内联,否则可能导致代码膨胀。
记法:
内联小函数,效率大提升。
📚 总结口诀(建议收藏)
引用是别名,指针能变名;
const 修饰谁,看它在谁前;
重载靠参数,覆盖靠 virtual;
构造来初始化,析构管回收;
值传安全慢,引用快速险;
默认构造空参数,拷贝复制老对象;
成员初始看列表,const 必须用它;
this 指我自己,变量冲突需它理;
静态变量类共有,函数无对象也能走;
内联轻快别太大,小巧函数刚刚好。
🚀 小结 & 明日预告
今天我们通过 10 个基础问题了解了 C++ 中最核心的概念,明天我们将进入:
Day 2:运算符重载、继承、多态专题
敬请期待!你可以点赞、收藏或留言,支持这个系列继续更新 ❤️
也欢迎将本系列推荐给需要打基础的朋友,一起进步!