# question
**Repository Path**: cpp_tutorial/question
## Basic Information
- **Project Name**: question
- **Description**: C++ 答疑
- **Primary Language**: C++
- **License**: Unlicense
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 21
- **Forks**: 1
- **Created**: 2023-05-27
- **Last Updated**: 2024-03-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# C++ 答疑室
答疑室群号: 682132891.
以下内容已弃用, 请 [点此查看](https://question-board.readthedocs.io/).
---
👉简单目录
- [提问方式](#提问方式)
- [答疑相关信息](#答疑相关信息)
- [答疑室的目的](#答疑室的目的)
- [C++ 相关](#c-相关)
- [我是本校学生,我学 C++ 是为了转专业到计软智网](#我是本校学生我学-c-是为了转专业到计软智网)
- [加入我们](#加入我们)
- [支持我们](#支持我们)
- [许可证](#许可证)
本仓库用于 C++ 的答疑,答疑范围以大学会教授的内容为主。如果你有这方面的问题,欢迎提问。
本答疑工作同时也是我的一种实践调查,因而由于调查课题限制,主要面向东南大学学生;如你非本校学生,请在提问时注明。
---
## 提问方式
- ️⚠ 提问**需要注册登录本 Gitee 网站的账号**,同时**建议使用电脑进行提问**。
- ️⚠ 提问的标题请采用陈述句概括问题。
- ⚠ 如果提问解决,请将提问网页右上角的**状态改为已完成**,或评论说明已完成。
在本网页最上面偏右中位置,找到橙色的【克隆/下载】按钮,从它往左找到【+ Issue】并点击。
你也可以通过[点击此处快速跳转](https://gitee.com/cpp_tutorial/question/issues/new/choose)。
---
## 答疑相关信息
如果你只是想提问,这些信息不了解也可,只在提问被拒绝或想搜索已有问题时再来查询。
### 答疑时间
**全年无休**,一天内任何我有空闲的时段。
尽量做到及时回答,但可能由于邮箱接收消息延迟或有事在忙而延误。
### 答疑范围
👉以下是我能回答你的
- 大学 C++ 课程的教学内容。
- C++11~C++23 的部分基础内容(以《Effective Modern C++》和《A Tour of C++, 3rd Edition》涉及内容为主)。
- 现代 C++ 的使用理念。
👉以下是我会回答你,但不情愿的
- 没有格式化的代码。(点击代码,在 VSCode 或 VS 中按 【Shift】+【Alt/option】+【F】)。
- 大量代码,但又没有描述其中的逻辑。
- 当存在报错信息时,以截图形式给出报错信息,或不给出详细的报错信息。
- 不会并且**不愿意**学习断点调试的提问者的问题。
- 模糊的问题。
- 态度不好的提问者的问题。
- C 风格 C++ 代码。
👉以下是我可能能回答你的
- C 语言代码。(C 和 C++ 真的是两回事,我完全不会 C!)
- 构建工具 CMake 的使用,不含工具链的配置。
- 包管理器 conan 的使用,不含工具链的配置。
- 部分软件的使用、安装。(C++ 环境配置则[点此参考](#c-环境配置))
👉以下是我不能回答你的
- 往年考试试卷在哪能找到。
- 仅有代码图片而没有代码文本的问题。
- C++ 并发相关内容。
- 国际化(i18n)相关内容。
- 过于复杂的模板元编程。
- 语言律师类问题,即对标准的咬文嚼字。
- 第三方库的使用。
- 大多软件的使用、安装。(C++ 环境配置则[点此参考](#c-环境配置))
- 除 CMake 外的构建工具的使用。(如 Makefile 等)
- 除 Conan 外的包管理器的使用。(如 vcpkg 等)
- 工具链的配置。
- 与运行环境强相关的问题。
### 答疑原则
> “‘你看不懂我这‘优雅’的代码,对吧?这说明我很聪明。’——这样做不是好的教学。”—— Bjarne Stroustrup
- 能提供代码辅助回答的地方,尽量给出代码或启发提问者给出代码。
- 答疑的过程应该是启发式的,是要辅助提问者自己弄明白这个问题。
- 先解决问题,再做详细解释。
- 回答时尽量详细但保持简单,不聪明、不自作聪明、不在回答中用复杂的回答显得自己很聪明。
- 如果有更简单的方法,教给提问者。
### 答疑记录
为了让未来的提问者能方便地查询已有答疑,我将对答疑进行标签标记。
#### 答疑类型
在答疑整个过程中调整,类型的划分主要参考 [C++核心准则](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) 和电类 C++ 教学大纲。
注意,设置标签时,一定会设置大标签,但不一定会设置有对应的子标签,这是因为子标签并不涵盖大标签的所有情况。如一个问题可能仅仅设置“对象”标签,而不是设置“对象”+“对象.生命周期”标签。
👉查看答疑类型标签(拼音排序)
⚠ 这里的解释超链接暂时使用我在教务处答疑室时的“每周一题”,其中有很多现在看来很糟糕的东西,待更新整合。
- 表达式和语句
- 标准库
- 标准库.容器和[算法](https://www.bilibili.com/video/BV1VU4y1U7rL)
- 标准库.时间
- 标准库.随机数
- 编程思维
- 编程思维.不要重复代码
- 编程思维.抽象
- 编程思维.单一职责
- 编程思维.类型安全
- 编程思维.设计模式
- 编程思维.资源安全
- C 风格 CPP:这里的 C 风格不是诋毁 C 语言,C 风格 C++ 是一种杂糅了 C 和 C++ 的恶心东西,先学它只会让学生讨厌 C++。
- C 风格 CPP.手动 new 与 delete
- C 风格 CPP.数组
- C 风格 CPP.指针运算
- C 风格 CPP.字符串
- C 语言问题
- [const](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_01/doc/)
- 错误处理
- 错误处理.异常
- [函数和函数对象](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_00/doc/#concept-function)
- 函数和函数对象.[参数传递](https://weekly-questions.readthedocs.io/core_guidelines/function_parameter_decision/)
- 函数和函数对象.[返回值](https://weekly-questions.readthedocs.io/core_guidelines/function_return_decision/)
- 函数和函数对象.[函数类型决策](https://weekly-questions.readthedocs.io/core_guidelines/function_type_decision/)
- 面向对象编程
- 类型与对象:这里的对象不是面向对象编程中所指的“对象”,[一个非正式的解释见此](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_00/doc/#object)。
- 类型与对象.[初始化](https://weekly-questions.readthedocs.io/core_guidelines/ES/ES_20/)
- 类型与对象.生命周期
- 类与[结构体](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_04/doc/)
- 类与结构体.[不变式](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_05/doc/)
- 类与结构体.[特殊函数](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_09/doc/)
- 类与结构体.友元函数
- 类与结构体.[运算符重载](https://weekly-questions.readthedocs.io/2021_2022_spring/week_02/doc/)
- [模板](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_06/doc/)
- 输入输出
- 输入输出.二进制
- 输入输出.格式化
- 输入输出.文件
- 术语和惯用法
- 算法与数据结构:这里的算法是一般意义上的算法
- 算法与数据结构.递归
- 算法与数据结构.排序
- 算法与数据结构.链表
- 项目管理:也包含多文件编译、包含头文件相关内容
- 项目管理.包管理
- 项目管理.构建工具
- [引用](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_00/doc/#concept-reference)
- [指针](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_00/doc/#concept-pointer)
- [资源](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_00/doc/#resource)管理
- [作用域](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_03/doc/)与[声明方式](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_02/doc/)
#### 答疑质量评级
在答疑解决后,我将对该答疑的质量进行评级,评级依据主要参考[如何更好地询问 C++ 代码问题](https://weekly-questions.readthedocs.io/how_to_ask_for_c++_coding_help/#)。
- 好
- 答疑时无论答疑者还是提问者,交流时都有明确的逻辑。
- 提问者在提问时而非交流过程中即给出了详细的信息。
- 答疑产生了简单而直接的解决方案。
- 答疑过程让答疑者很开心。
- 中
- 差
- 提问者代码没有格式化。
- 提问者代码过多,而没有描述代码间的关系。
- 当存在报错信息时,以截图形式给出报错信息,或不给出详细的报错信息。
- 提问者不愿意在解决问题的过程中学习新鲜事物。
- 提问者或答疑者回复时间跨度一天以上。
- 出现不恰当的言辞。
## 答疑室的目的
> “社会实践是检验真理的唯一标准。” —— 1963 年《五评苏共中央的公开信》[违规信息]主席加注
当前目标是通过答疑实践,
- 了解东南大学学生在学习 C++ 过程中的痛点。
- 让学生能抛弃“C++ = C + 面向对象程序设计”“设计模式只能用于面向对象程序设计”等错误认识,对“是什么让 C++成为 C++”这一问题有一定的正确认识。
- 积累 C++ 的传授经验,总结一些简单的教学示例(不是语法的堆砌,而是“为什么要有这个特性”的生动解释)。
### 我是谁?
- 一个还没入门 C++ 的 C++ 爱好者。
- 一个热爱学习和传授 C++ 的人。
- 一个乐于学习并正尝试运用辩证唯物论和唯物辩证法的[违规信息]主义者。
- 2022 上半年(2021-2022 学年春季学期,周一线上、周二线下)和 2022 下半年(2022-2023 学年秋季学期,周四线上、周一线下),教务处安排的 C++ 答疑室中的答疑工作者。
- 2022 下半年考试延期后的寒假期间(由于考试延期,教务处安排答疑继续进行),教务处安排的 C++ 答疑室中唯一坚持答疑,并在寒假中后期和考试周时每天答疑的答疑工作者。
### 对啊,不是有教务处安排的答疑室吗?
因为教务处安排的答疑室形式上有不少不足之处。
- 答疑者能力不足
- 教务处目前是用 C++ 课程成绩作为答疑者能力的评判标准,这意味着不少答疑者(至少我两学期所见)实际并不了解 C++,只是基于自己的感性认识在回答。我所见最有趣的两个回答是:`String& string2 = string1` 调用了 `String` 的拷贝赋值函数;对字符串字面值的存储胡编乱造来作为“每周一题”发布(后已联系改正)。可以不为同学拓展内容,但应该至少保证所说内容的正确。
- 答疑者答疑不及时
- 有的答疑者会选择在一天某个时间段集中回答问题,则此时提问者一般是不在线的,明明能实时进行的交互答疑却变成了一问一答。
- 有的答疑者**完全不答疑**,留下的问题第二天的答疑者可能会作答,可能因为消息同步等原因直接忽视掉。
- 这样的做法,再加上 2023 年上半年寒假时根本不去答——那 C++ 期末考试前一天同学一共提出的 45 个问题该怎么办——我寒假中后期决定接手每天回答时,有不少提问的熟面孔已经不再向答疑室提问。
- 在此列一下上学期的 C++ 答疑数作为参考(我的答疑数/平均答疑数/总答疑数):196/69/617。
- 时间有限
- 在教务处答疑室中我仅有一天里固定的时间能答疑,这不能满足我的调查需要。
- 答疑内容无法归档,方便以后的同学查找
- 目前教务处答疑室采取的形式是 QQ 聊天中进行提问和回答,这意味着提问和回答都是一次性的。即使针对同一个同学,也很难记起来以前回答过他哪些问题;而其他同学也无法了解到别的同学所提的问题。这严重降低了答疑效率和对同学的有用程度。
- 针对该问题,负责的同学所提出的解决方案是要求答疑者每周精选题目并提交,但实际提交时常有敷衍,且最终采用图片形式呈现。是的,代码图片,**也就是无法直接运行的代码!** 为了对抗这种形式,我把每周一题整理在 [readthedocs](https://weekly-questions.readthedocs.io/) 中,但这实在过于繁琐了,最终效果不佳。
- 代码交流困难
- QQ 上没有对代码的语法显示,更没有对代码的直接运行支持。提问者和答疑者往往以图片、文本、文件等方式进行交流,而我值班时则尽量以 [Compiler Explorer](https://godbolt.org/) 提供可运行的在线代码链接,但这些方式总归是间接的。
👉我的每周一题
### 本答疑室的缺陷
虽然本答疑室形式上能够解决教务处答疑室的痛点,但同时存在以下缺陷:
- 提问形式相对复杂
- 需要注册账号,点击提问按钮进行提问,且对移动端(手机端)支持不够友好。
- 消息提示容易忽略
- Gitee 网站默认采用站内通知形式提示消息,如果不打开网页,则不知道有没有回复;这种负担可以通过在账户设置里勾选邮箱提示减轻,但多数人不常用邮箱,邮箱提示也是容易忽略的。(当然我个人不存在这个问题,是会尽量及时答疑的。)
由于以上两个问题,答疑往来相对于 QQ 上可能延迟更高——但效果应该是比在 QQ 上完全没人来答疑好的。
## C++ 相关
- [一些非正式描述的 C++ 基本概念](https://weekly-questions.readthedocs.io/2022_2023_autumn/week_00/doc/)
### C++ 环境配置
- 直接装 [Visual Studio](https://visualstudio.microsoft.com/zh-hans/) 最新版即可用。
- 如需在线编译运行,可用 [Compiler Explorer](https://godbolt.org/),此处提供一个[已配置好提供较多诊断的版本](https://godbolt.org/z/9bv63vWc6)。
- [我个人写的 Visual Studio 配置教程](https://vscode-cpp-starter.readthedocs.io/visual_studio/main.html)
- [我个人写的 VSCode 配置教程](https://vscode-cpp-starter.readthedocs.io/)
### C++ 学习建议
- [个人的建议已整合到此](https://gitee.com/FeignClaims/board#%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95)
## 我是本校学生,我学 C++ 是为了转专业到计软智网
有一个相关的群,为了避免社会人士影响,请通过邮箱 www4112379@163.com 以标题“车车转专业到计软智网”告知我 QQ 号,附上一卡通照片(只是确认有无,注意打码!)作为证明。
## 加入我们
如果你满足以下条件,欢迎通过邮箱 www4112379@163.com 以标题“加入答疑室”联系我。
- **热爱学习和无偿传授 C++**。
- 了解并能使用现代 C++,有想过如何用现代 C++ 简化目前大学 C++ 的教学路径。
- 不聪明、不自作聪明、不会在回答中用复杂的回答显得自己很聪明。
- 观看过[《CppCon2017: 学习和教授现代 C++ - Bjarne Stroustrup》](https://www.bilibili.com/video/BV1d3411579r) 和[《CppCon 2015: 停止传授 C - Kate Gregory》](https://www.bilibili.com/video/BV13P411D7eF/)。
- 读过《人的正确思想是从哪里来的?》,能通过辩证唯物论理解初学者学习 C++ 时的知识积累与自身已实践上升的 C++ 知识体系间的不同之处。
- 会使用 [Compiler Explorer](https://godbolt.org/) 分享代码,知道 [C++ Insights](https://cppinsights.io/) 和 [Quick C++ Benchmarks](https://quick-bench.com/)。
## 支持我们
如果你认为答疑室对你有帮助,请点击 [Star](https://gitee.com/cpp_tutorial/question/star) 按钮给我们以精神鼓舞。
## 许可证
[UNLICENSE](UNLICENSE)