From 1d6f890db428771d97eb72a0cae10ca5149a92d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=92=E6=95=85=E9=87=8C?= <3326284481@qq.com> Date: Sun, 17 Mar 2024 14:43:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=96=87=E4=BB=B6=E7=A9=BA?= =?UTF-8?q?=E6=A0=BC=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BA=9B=20README?= =?UTF-8?q?=20=E6=96=87=E4=BB=B6=EF=BC=8C=E5=88=9B=E5=BB=BA=20SUMMARY=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BB=A5=E6=94=AF=E6=8C=81=20GitBook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 23 ++ ...2\347\253\240-\347\220\206\345\277\265.md" | 4 +- .../README.md" | 15 + ...347\241\200C++\351\242\230\347\233\256.md" | 76 ++--- ...04\344\275\277\347\224\250\357\274\211.md" | 138 ++++----- ...04\351\200\200\345\214\226\357\274\211.md" | 274 +++++++++--------- .../README.md" | 9 + 7 files changed, 293 insertions(+), 246 deletions(-) create mode 100644 SUMMARY.md create mode 100644 "src/\345\215\242\347\221\237\346\227\245\347\273\217/README.md" rename "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231002 \345\237\272\347\241\200C++\351\242\230\347\233\256.md" => "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231002\345\237\272\347\241\200C++\351\242\230\347\233\256.md" (94%) rename "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231017 \345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\350\275\254\346\215\242\347\232\204\344\275\277\347\224\250\357\274\211.md" => "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231017\345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\350\275\254\346\215\242\347\232\204\344\275\277\347\224\250\357\274\211.md" (96%) rename "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231126 \345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\346\225\260\347\273\204\351\200\200\345\214\226\357\274\211.md" => "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231126\345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\346\225\260\347\273\204\351\200\200\345\214\226\357\274\211.md" (95%) create mode 100644 "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/README.md" diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 00000000..d9d5a62a --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,23 @@ +# Summary + +* [作业与解析](README.md) +* [C++CoreGuidelines](src/C++CoreGuidelines/README.md) + - [第一章-简介](src/C++CoreGuidelines/第1章-简介.md) + - [第二章-理念](src/C++CoreGuidelines/第2章-理念.md) + - [第三章-接口](src/C++CoreGuidelines/第3章-接口.md) + - [第四章-函数](src/C++CoreGuidelines/第4章-函数.md) + - [第五章-类和类层次结构](src/C++CoreGuidelines/第5章-类和类层次结构.md) +* [卢瑟日经](src/卢瑟日经/README.md) + - [赋值运算符求值顺序的问题](src/卢瑟日经/赋值运算符求值顺序问题.md) + - [函数调用禁止隐式转换](src/卢瑟日经/函数调用禁止隐式转换.md) + - [数组&指针](src/卢瑟日经/数组&指针.md) + - [同步、异步、阻塞](src/卢瑟日经/同步、异步、阻塞.md) + - [为什么优先成员初始化器](src/卢瑟日经/为什么优先成员初始化器.md) + - [重载operator=要不要检查自赋值?](src/卢瑟日经/重载operator=要不要检查自赋值?.md) + - [C&C++伪规则和错误的看法](src/卢瑟日经/C&C++伪规则和错误的看法.md) + - [catch(auto)的问题](src/卢瑟日经/catch(auto)的问题.md) + - [detach的问题](src/卢瑟日经/detach的问题.md) +* [基础性C++题目与答案](src/基础性C++题目/README.md) + - [20231002 基础C++题目](src/基础性C++题目/20231002基础C++题目.md) + - [20231017基础C++题目(转换的使用)](src/基础性C++题目/20231017基础C++题目(转换的使用).md) + - [20231126基础C++题目(数组退化)](src/基础性C++题目/20231126基础C++题目(数组退化).md) diff --git "a/src/C++CoreGuidelines/\347\254\2542\347\253\240-\347\220\206\345\277\265.md" "b/src/C++CoreGuidelines/\347\254\2542\347\253\240-\347\220\206\345\277\265.md" index 3343a506..a268c1f0 100644 --- "a/src/C++CoreGuidelines/\347\254\2542\347\253\240-\347\220\206\345\277\265.md" +++ "b/src/C++CoreGuidelines/\347\254\2542\347\253\240-\347\220\206\345\277\265.md" @@ -13,7 +13,7 @@ 理念性规则概览: - [理念](#理念) - + [▌P.1 在代码中直接表达思想](#p1-在代码中直接表达思想) + + [P.1 在代码中直接表达思想](#p1-在代码中直接表达思想) + [P.2 用 ISO 标准写代码](#p2-用-iso-标准写代码) + [P.3 表达意图](#p3-表达意图) + [P.4 理想情况下,程序应该是静态类型安全的](#p4-理想情况下程序应该是静态类型安全的) @@ -31,7 +31,7 @@ > 如果觉得没听懂不用在意,的确有点抽象,可以简单理解为一般情况下的编码规范。 -## ▌P.1 在代码中直接表达思想 +## P.1 在代码中直接表达思想 编译器是不会去读注释(或设计文档)的,许多程序员也(固执地)不去读它们。 而代码中所表达的东西是带有 **明确的语义** 的,并且(原则上)是可以由编译器和其他工具进行检验的。 diff --git "a/src/\345\215\242\347\221\237\346\227\245\347\273\217/README.md" "b/src/\345\215\242\347\221\237\346\227\245\347\273\217/README.md" new file mode 100644 index 00000000..a67781c6 --- /dev/null +++ "b/src/\345\215\242\347\221\237\346\227\245\347\273\217/README.md" @@ -0,0 +1,15 @@ +# 卢瑟日经 + +一些常见的卢瑟问题。 + +**目录一览**: + +- [赋值运算符求值顺序的问题](赋值运算符求值顺序问题.md) +- [函数调用禁止隐式转换](函数调用禁止隐式转换.md) +- [数组&指针](数组&指针.md) +- [同步、异步、阻塞](同步、异步、阻塞.md) +- [为什么优先成员初始化器](为什么优先成员初始化器.md) +- [重载operator=要不要检查自赋值?](重载operator=要不要检查自赋值?.md) +- [C&C++伪规则和错误的看法](C&C++伪规则和错误的看法.md) +- [catch(auto)的问题](catch(auto)的问题.md) +- [detach的问题](detach的问题.md) diff --git "a/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231002 \345\237\272\347\241\200C++\351\242\230\347\233\256.md" "b/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231002\345\237\272\347\241\200C++\351\242\230\347\233\256.md" similarity index 94% rename from "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231002 \345\237\272\347\241\200C++\351\242\230\347\233\256.md" rename to "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231002\345\237\272\347\241\200C++\351\242\230\347\233\256.md" index bbe93d95..b7178b16 100644 --- "a/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231002 \345\237\272\347\241\200C++\351\242\230\347\233\256.md" +++ "b/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231002\345\237\272\347\241\200C++\351\242\230\347\233\256.md" @@ -1,38 +1,38 @@ -# 20231002 基础 C++题目 - -## 题目 - -下面展示的代码 - -```C++ -#include - -struct foo{ - char a[16]; -}; - -int main(){ - foo a {"Hello, World!"}; - auto b = a; - a.a[0] = '\0'; - std::cout << b.a; -} -``` - -其行为是: - -- A. 无法编译/未定义行为 -- B. 可编译,保证无输出 -- C. 可编译,保证输出`"Hello, World!"` -- D. 可编译,输出为实现定义 - -## 答案 - -C - -## 解析 - -虽然数组类型不能直接赋值,但是作为类类型成员的数组类型,默认复制赋值函数的行为是逐元素复制。 - -- 此赋值行为在 C 语言也是成立的。 -- 切忌将 foo::a 理解成指针。 +# 20231002 基础 C++题目 + +## 题目 + +下面展示的代码 + +```C++ +#include + +struct foo{ + char a[16]; +}; + +int main(){ + foo a {"Hello, World!"}; + auto b = a; + a.a[0] = '\0'; + std::cout << b.a; +} +``` + +其行为是: + +- A. 无法编译/未定义行为 +- B. 可编译,保证无输出 +- C. 可编译,保证输出`"Hello, World!"` +- D. 可编译,输出为实现定义 + +## 答案 + +C + +## 解析 + +虽然数组类型不能直接赋值,但是作为类类型成员的数组类型,默认复制赋值函数的行为是逐元素复制。 + +- 此赋值行为在 C 语言也是成立的。 +- 切忌将 foo::a 理解成指针。 diff --git "a/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231017 \345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\350\275\254\346\215\242\347\232\204\344\275\277\347\224\250\357\274\211.md" "b/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231017\345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\350\275\254\346\215\242\347\232\204\344\275\277\347\224\250\357\274\211.md" similarity index 96% rename from "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231017 \345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\350\275\254\346\215\242\347\232\204\344\275\277\347\224\250\357\274\211.md" rename to "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231017\345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\350\275\254\346\215\242\347\232\204\344\275\277\347\224\250\357\274\211.md" index 91de62fb..3107db39 100644 --- "a/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231017 \345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\350\275\254\346\215\242\347\232\204\344\275\277\347\224\250\357\274\211.md" +++ "b/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231017\345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\350\275\254\346\215\242\347\232\204\344\275\277\347\224\250\357\274\211.md" @@ -1,69 +1,69 @@ -# 20231017 基础 C++题目 - -## 题目 - -### 1. 下面展示的代码应当使用 - -```C++ -struct Base { int x; }; -struct Derived : Base { int y; } - -int get_xy(Base * param){ - auto pd = ????_cast(param); - return pd->x * pd->y; -} -``` - -- A. static_cast -- B. dynamic_cast -- C. 以上全部 -- D. 不允许转换 - -### 2. 下面展示的代码应当使用 - -```C++ -void erased_call(void (* pfn)(void), const char * param){ - auto typed_pfn = ????_cast(pfn); - typed_pfn(param); -} -``` - -- A. static_cast -- B. reinterpret_cast -- C. 以上全部 -- D. 不允许转换 - -### 3. 下面展示的代码应当使用 - -```C++ -template -void foo(T&& i){ - // some implemetion code -} - -void speciallized_foo(int param){ - auto spfoo = ????_cast(foo); - spfoo(param); -} -``` - -- A. static_cast -- B. reinterpret_cast -- C. 以上全部 -- D. 不允许转换 - -## 答案 - -1. A -2. B -3. A - -## 解析 - -1. 此处 `Base` 并非多态类型,因此 `dynamic_cast` 无法进行基类指针到派生类指针的转换,而 `static_cast` 可以,[如](https://godbolt.org/z/8nGEvPTE8)。 - + 你可以为 `Base` 添加虚函数成员,使其成为多态类型,此时`dynamic_cast` 可以用于基类到派生类的转换。 - + 注意 `static_cast` 并不像 `dynamic_cast` 那样具有 [RTTI](https://zh.wikipedia.org/zh-hans/%E5%9F%B7%E8%A1%8C%E6%9C%9F%E5%9E%8B%E6%85%8B%E8%A8%8A%E6%81%AF) ,无法转换时不会返回 `nullptr` 或抛出异常。通过不合法的转换得到的指针去访问成员会产生[未定义行为](https://zh.cppreference.com/w/cpp/language/ub)。 -2. `reinterpret_cast`可以用于函数指针的转换,而 `static_cast` 不可以。 - + 此处 `reinterpret_cast` 并不会产生实际转换代码。 - + 普通指针 `void *` 和函数指针 `void (*)(void)` 在一些平台上的长度不同,C++ 标准并不保证这两种类型能够以 `reinterpret_cast` 互相转换。 -3. 进行 `static_cast` 转换的时候会发生重载决议,模板函数会实例化为选择到的函数类型,再隐式转换为函数指针。 +# 20231017 基础 C++题目 + +## 题目 + +### 1. 下面展示的代码应当使用 + +```C++ +struct Base { int x; }; +struct Derived : Base { int y; } + +int get_xy(Base * param){ + auto pd = ????_cast(param); + return pd->x * pd->y; +} +``` + +- A. static_cast +- B. dynamic_cast +- C. 以上全部 +- D. 不允许转换 + +### 2. 下面展示的代码应当使用 + +```C++ +void erased_call(void (* pfn)(void), const char * param){ + auto typed_pfn = ????_cast(pfn); + typed_pfn(param); +} +``` + +- A. static_cast +- B. reinterpret_cast +- C. 以上全部 +- D. 不允许转换 + +### 3. 下面展示的代码应当使用 + +```C++ +template +void foo(T&& i){ + // some implemetion code +} + +void speciallized_foo(int param){ + auto spfoo = ????_cast(foo); + spfoo(param); +} +``` + +- A. static_cast +- B. reinterpret_cast +- C. 以上全部 +- D. 不允许转换 + +## 答案 + +1. A +2. B +3. A + +## 解析 + +1. 此处 `Base` 并非多态类型,因此 `dynamic_cast` 无法进行基类指针到派生类指针的转换,而 `static_cast` 可以,[如](https://godbolt.org/z/8nGEvPTE8)。 + + 你可以为 `Base` 添加虚函数成员,使其成为多态类型,此时`dynamic_cast` 可以用于基类到派生类的转换。 + + 注意 `static_cast` 并不像 `dynamic_cast` 那样具有 [RTTI](https://zh.wikipedia.org/zh-hans/%E5%9F%B7%E8%A1%8C%E6%9C%9F%E5%9E%8B%E6%85%8B%E8%A8%8A%E6%81%AF) ,无法转换时不会返回 `nullptr` 或抛出异常。通过不合法的转换得到的指针去访问成员会产生[未定义行为](https://zh.cppreference.com/w/cpp/language/ub)。 +2. `reinterpret_cast`可以用于函数指针的转换,而 `static_cast` 不可以。 + + 此处 `reinterpret_cast` 并不会产生实际转换代码。 + + 普通指针 `void *` 和函数指针 `void (*)(void)` 在一些平台上的长度不同,C++ 标准并不保证这两种类型能够以 `reinterpret_cast` 互相转换。 +3. 进行 `static_cast` 转换的时候会发生重载决议,模板函数会实例化为选择到的函数类型,再隐式转换为函数指针。 diff --git "a/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231126 \345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\346\225\260\347\273\204\351\200\200\345\214\226\357\274\211.md" "b/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231126\345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\346\225\260\347\273\204\351\200\200\345\214\226\357\274\211.md" similarity index 95% rename from "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231126 \345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\346\225\260\347\273\204\351\200\200\345\214\226\357\274\211.md" rename to "src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231126\345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\346\225\260\347\273\204\351\200\200\345\214\226\357\274\211.md" index d5380c18..2a0ad76e 100644 --- "a/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231126 \345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\346\225\260\347\273\204\351\200\200\345\214\226\357\274\211.md" +++ "b/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/20231126\345\237\272\347\241\200C++\351\242\230\347\233\256\357\274\210\346\225\260\347\273\204\351\200\200\345\214\226\357\274\211.md" @@ -1,137 +1,137 @@ -# 20231017 基础 C++题目 - -## 题目 - -### 1.下面展示的代码的行为是 - -```C++ -#include -#include - -template -bool foo(T* param) { - return std::is_same::value; -} - -int main() { - char arr[]{"Hello, World!"}; - std::cout << foo(arr); -} -``` - -- A. 无法编译/未定义行为 -- B. 可编译,保证输出"0" -- C. 可编译,保证输出"1" -- D. 可编译,输出为实现定义 - -### 2.下面展示的代码的行为是 - -```C++ -#include -#include - -template -bool foo(T& param) { - return std::is_same::value; -} - -int main() { - char arr[]{"Hello, World!"}; - std::cout << foo(arr); -} -``` - -- A. 无法编译/未定义行为 -- B. 可编译,保证输出"0" -- C. 可编译,保证输出"1" -- D. 可编译,输出为实现定义 - -### 3.下面展示的代码的行为是 - -```C++ -#include - -template -size_t foo(T param) { - return sizeof(param); -} - -template -size_t foo(T & param) { - return sizeof(param); -} - -int main() { - char arr[2]; - std::cout << foo(arr) == sizeof(arr); -} -``` - -- A. 无法编译/未定义行为 -- B. 可编译,保证输出"0" -- C. 可编译,保证输出"1" -- D. 可编译,输出为实现定义 - -### 4.下面展示的代码的行为是 - -```C++ -#include -#include - -template -bool foo(T param1, U param2) { - return std::is_same::value; -} - -int main() { - char arr[]{"Hello, World!"}; - const char * str = "Hello, World!"; - std::cout << foo(arr,str); -} -``` - -- A. 无法编译/未定义行为 -- B. 可编译,保证输出"0" -- C. 可编译,保证输出"1" -- D. 可编译,输出为实现定义 - -### 5.下面展示的代码的行为是 - -```C++ -#include -#include - -extern char arr[]; - -template -bool foo(T & param1, char param2[]){ - return std::is_same::value; -} - -int main() { - std::cout << foo(arr, arr); -} - -char arr[] = "Hello, World"; -``` - -- A. 无法编译/未定义行为 -- B. 可编译,保证输出"0" -- C. 可编译,保证输出"1" -- D. 可编译,输出为实现定义 - -## 答案 - -1. C -2. B -3. A -4. B -5. B - -## 解析 - -1. 基本的数组退化现象,`param` 的类型为 `char*`,`T*` 会推导为 `char*`,`std::is_same::value` 为 `true`。 -2. 没有 `T*` 形式的推导的时候,`T&` 会推导为 `char (&)[13]`,`std::is_same::value` 为 `false`。 -3. 此处 `foo(T param)` 会推导为 `foo(char * param)`,`foo(T¶m)` 会推导为 `foo(char (&)[2])`,这里是相同优先级的转换,导致重载决议冲突,无法编译。 -4. `arr` 的类型为 `char[13]`,退化得到的是 `char*`,`str` 的类型为 `const char*`,`std::is_same::value` 为`false`。 -5. 此处 `arr` 是 unbounded array,`param1` 的类型会推导得到数组的引用,`T`是数组类型,而 `param2` 是指针类型, `std::is_same::value` 为 `false`。 +# 20231017 基础 C++题目 + +## 题目 + +### 1.下面展示的代码的行为是 + +```C++ +#include +#include + +template +bool foo(T* param) { + return std::is_same::value; +} + +int main() { + char arr[]{"Hello, World!"}; + std::cout << foo(arr); +} +``` + +- A. 无法编译/未定义行为 +- B. 可编译,保证输出"0" +- C. 可编译,保证输出"1" +- D. 可编译,输出为实现定义 + +### 2.下面展示的代码的行为是 + +```C++ +#include +#include + +template +bool foo(T& param) { + return std::is_same::value; +} + +int main() { + char arr[]{"Hello, World!"}; + std::cout << foo(arr); +} +``` + +- A. 无法编译/未定义行为 +- B. 可编译,保证输出"0" +- C. 可编译,保证输出"1" +- D. 可编译,输出为实现定义 + +### 3.下面展示的代码的行为是 + +```C++ +#include + +template +size_t foo(T param) { + return sizeof(param); +} + +template +size_t foo(T & param) { + return sizeof(param); +} + +int main() { + char arr[2]; + std::cout << foo(arr) == sizeof(arr); +} +``` + +- A. 无法编译/未定义行为 +- B. 可编译,保证输出"0" +- C. 可编译,保证输出"1" +- D. 可编译,输出为实现定义 + +### 4.下面展示的代码的行为是 + +```C++ +#include +#include + +template +bool foo(T param1, U param2) { + return std::is_same::value; +} + +int main() { + char arr[]{"Hello, World!"}; + const char * str = "Hello, World!"; + std::cout << foo(arr,str); +} +``` + +- A. 无法编译/未定义行为 +- B. 可编译,保证输出"0" +- C. 可编译,保证输出"1" +- D. 可编译,输出为实现定义 + +### 5.下面展示的代码的行为是 + +```C++ +#include +#include + +extern char arr[]; + +template +bool foo(T & param1, char param2[]){ + return std::is_same::value; +} + +int main() { + std::cout << foo(arr, arr); +} + +char arr[] = "Hello, World"; +``` + +- A. 无法编译/未定义行为 +- B. 可编译,保证输出"0" +- C. 可编译,保证输出"1" +- D. 可编译,输出为实现定义 + +## 答案 + +1. C +2. B +3. A +4. B +5. B + +## 解析 + +1. 基本的数组退化现象,`param` 的类型为 `char*`,`T*` 会推导为 `char*`,`std::is_same::value` 为 `true`。 +2. 没有 `T*` 形式的推导的时候,`T&` 会推导为 `char (&)[13]`,`std::is_same::value` 为 `false`。 +3. 此处 `foo(T param)` 会推导为 `foo(char * param)`,`foo(T¶m)` 会推导为 `foo(char (&)[2])`,这里是相同优先级的转换,导致重载决议冲突,无法编译。 +4. `arr` 的类型为 `char[13]`,退化得到的是 `char*`,`str` 的类型为 `const char*`,`std::is_same::value` 为`false`。 +5. 此处 `arr` 是 unbounded array,`param1` 的类型会推导得到数组的引用,`T`是数组类型,而 `param2` 是指针类型, `std::is_same::value` 为 `false`。 diff --git "a/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/README.md" "b/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/README.md" new file mode 100644 index 00000000..2372cd9e --- /dev/null +++ "b/src/\345\237\272\347\241\200\346\200\247C++\351\242\230\347\233\256/README.md" @@ -0,0 +1,9 @@ +# 基础性C++题目 + +纯基础,由 [Da'Inihlus](https://github.com/dynilath) 制作。 + +**目录一览**: + +- [20231002 基础C++题目](20231002基础C++题目.md) +- [20231017基础C++题目(转换的使用)](20231017基础C++题目(转换的使用).md) +- [20231126基础C++题目(数组退化)](20231126基础C++题目(数组退化).md)