# 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)