From 3c8a3f259b8181ae827098d5be7a68c044e2d463 Mon Sep 17 00:00:00 2001 From: zhangxing Date: Thu, 30 Mar 2023 00:15:11 +0800 Subject: [PATCH] support bazel complie this project and format code. --- .gitignore | 6 + .vscode/settings.json | 112 ++++ README.md | 332 ++++++------ README_EN.md | 56 +- WORKSPACE | 0 basic_content/abstract/BUILD | 43 ++ basic_content/abstract/README.md | 2 +- basic_content/abstract/abstract.cpp | 23 +- basic_content/abstract/abstract_base.h | 21 + basic_content/abstract/derived_full.cpp | 39 +- basic_content/abstract/interesting_facts1.cpp | 26 +- basic_content/abstract/interesting_facts2.cpp | 45 +- basic_content/abstract/interesting_facts3.cpp | 37 +- basic_content/abstract/interesting_facts4.cpp | 47 +- basic_content/abstract/interesting_facts5.cpp | 27 +- basic_content/abstract/pure_virtual.cpp | 30 +- basic_content/abstract/test.cpp | 23 - basic_content/assert/BUILD | 13 + basic_content/assert/assert.c | 3 +- basic_content/assert/ignore_assert.c | 1 - basic_content/bit/BUILD | 7 + basic_content/bit/README.md | 2 +- basic_content/bit/bit.cpp | 18 + basic_content/bit/learn.cpp | 19 - basic_content/c_poly/BUILD | 13 + basic_content/c_poly/c++_examp | Bin 8720 -> 0 bytes basic_content/c_poly/c++_examp.cpp | 43 +- basic_content/c_poly/c_examp | Bin 8720 -> 0 bytes basic_content/const/BUILD | 17 + basic_content/const/README.md | 94 ++-- .../const/class_const/c++11_example/BUILD | 16 + .../const/class_const/c++11_example/apple.cpp | 32 +- .../const/class_const/c++11_example/apple.h | 13 + .../const/class_const/c++11_example/main | Bin 9656 -> 0 bytes .../const/class_const/c++11_example/main.cpp | 38 +- .../const/class_const/first_example/BUILD | 16 + .../const/class_const/first_example/apple.cpp | 31 +- .../const/class_const/first_example/apple.h | 11 + .../const/class_const/first_example/main.cpp | 38 +- .../const/class_const/overload_example/BUILD | 18 + .../class_const/overload_example/apple.cpp | 33 +- .../class_const/overload_example/apple.h | 11 + .../const/class_const/overload_example/main | Bin 9656 -> 0 bytes .../class_const/overload_example/main.cpp | 44 +- .../const/class_const/static_example/BUILD | 17 + .../class_const/static_example/apple.cpp | 34 +- .../const/class_const/static_example/apple.h | 11 + .../const/class_const/static_example/main | Bin 9704 -> 0 bytes .../const/class_const/static_example/main.cpp | 43 +- basic_content/const/const_function.cpp | 12 +- basic_content/const/const_num.cpp | 12 +- basic_content/const/extern_const/BUILD | 14 + .../const/extern_const/const_file1.cpp | 2 +- .../const/extern_const/const_file2.cpp | 7 +- basic_content/const/extern_const/file1.cpp | 2 +- basic_content/const/extern_const/file2.cpp | 7 +- .../const/funciton_const/condition1/BUILD | 24 + .../funciton_const/condition1/condition1.cpp | 9 +- .../funciton_const/condition1/condition2.cpp | 11 +- .../funciton_const/condition1/condition3.cpp | 17 +- .../const/funciton_const/condition2/BUILD | 23 + .../funciton_const/condition2/condition1 | Bin 9232 -> 0 bytes .../funciton_const/condition2/condition1.cpp | 15 +- .../funciton_const/condition2/condition2.cpp | 11 +- .../funciton_const/condition2/condition3 | Bin 9232 -> 0 bytes .../funciton_const/condition2/condition3.cpp | 11 +- .../const/funciton_const/condition3/BUILD | 9 + .../funciton_const/condition3/condition1 | Bin 9232 -> 0 bytes .../funciton_const/condition3/condition1.cpp | 12 +- basic_content/decltype/BUILD | 8 + basic_content/decltype/decltype | Bin 22080 -> 0 bytes basic_content/decltype/decltype.cpp | 69 +-- basic_content/enum/BUILD | 16 + basic_content/enum/README.md | 22 +- basic_content/enum/classic_practice | Bin 9328 -> 0 bytes basic_content/enum/classic_practice.cpp | 84 +-- basic_content/enum/tradition_color.cpp | 12 +- basic_content/explicit/BUILD | 9 + basic_content/explicit/explicit | Bin 9288 -> 0 bytes basic_content/explicit/explicit.cpp | 71 +-- basic_content/extern/README.md | 4 +- basic_content/extern/extern_c++/BUILD | 15 + basic_content/extern/extern_c++/add.cpp | 6 +- basic_content/extern/extern_c++/add.h | 2 +- basic_content/extern/extern_c++/add.o | Bin 1248 -> 0 bytes basic_content/extern/extern_c++/main | Bin 8960 -> 0 bytes basic_content/extern/extern_c/BUILD | 14 + basic_content/extern/extern_c/add.cpp | 4 +- basic_content/extern/extern_c/add.h | 2 +- basic_content/extern/extern_c/add.o | Bin 1248 -> 0 bytes basic_content/extern/extern_c/main | Bin 8608 -> 0 bytes basic_content/friend/BUILD | 15 + basic_content/friend/friend_class | Bin 9344 -> 0 bytes basic_content/friend/friend_class.cpp | 28 +- basic_content/friend/friend_func | Bin 9336 -> 0 bytes basic_content/friend/friend_func.cpp | 31 +- basic_content/func_pointer/BUILD | 8 + basic_content/func_pointer/func1 | Bin 9368 -> 0 bytes basic_content/func_pointer/func_pointer.cpp | 26 +- basic_content/inline/BUILD | 23 + basic_content/inline/README.md | 4 +- basic_content/inline/inline | Bin 9200 -> 0 bytes basic_content/inline/inline.cpp | 43 +- basic_content/inline/inline.h | 31 +- basic_content/inline/inline_virtual.cpp | 52 +- basic_content/macro/BUILD | 15 + basic_content/macro/do_while | Bin 9464 -> 0 bytes basic_content/macro/do_while.cpp | 99 ++-- basic_content/macro/sig_examp | Bin 14360 -> 0 bytes basic_content/macro/sig_examp.cpp | 114 ++-- basic_content/maohao/.README.md.un~ | Bin 1052 -> 0 bytes basic_content/maohao/BUILD | 8 + basic_content/maohao/README.md~ | 14 - basic_content/maohao/maohao.cpp | 17 +- basic_content/pointer_refer/BUILD | 15 + basic_content/pointer_refer/copy_construct | Bin 9592 -> 0 bytes .../pointer_refer/copy_construct.cpp | 24 +- basic_content/pointer_refer/effec | Bin 20576 -> 0 bytes basic_content/pointer_refer/effec.cpp | 28 +- basic_content/sizeof/BUILD | 51 ++ basic_content/sizeof/blackclass.cpp | 15 +- basic_content/sizeof/genA.cpp | 30 +- basic_content/sizeof/geninhe.cpp | 60 +-- basic_content/sizeof/moreinhe.cpp | 37 +- basic_content/sizeof/morevir.cpp | 19 +- basic_content/sizeof/static.cpp | 35 +- basic_content/sizeof/virinhe.cpp | 33 +- basic_content/sizeof/virmoreinhe.cpp | 33 +- basic_content/static/BUILD | 43 ++ basic_content/static/demo | Bin 9104 -> 0 bytes basic_content/static/nostatic_class.cpp | 43 +- basic_content/static/static_class.cpp | 43 +- basic_content/static/static_demo.cpp | 40 +- .../static/static_error_variable.cpp | 39 +- basic_content/static/static_funciton.cpp | 30 +- basic_content/static/static_variable.cpp | 35 +- basic_content/struct/BUILD | 29 + basic_content/struct/ext | Bin 14536 -> 0 bytes basic_content/struct/ext_struct_func.cpp | 48 +- basic_content/struct/sf | Bin 8992 -> 0 bytes basic_content/struct/stff | Bin 9152 -> 0 bytes basic_content/struct/struct_func | Bin 8768 -> 0 bytes basic_content/struct/struct_func.c | 37 +- basic_content/struct/struct_func.cpp | 39 +- basic_content/struct/struct_func_func.cpp | 64 ++- basic_content/this/BUILD | 8 + basic_content/this/person | Bin 33952 -> 0 bytes basic_content/this/person.cpp | 57 +- basic_content/union/BUILD | 8 + basic_content/union/union | Bin 9704 -> 0 bytes basic_content/union/union.cpp | 51 +- basic_content/using/BUILD | 30 ++ basic_content/using/derived_base | Bin 15168 -> 0 bytes basic_content/using/derived_base.cpp | 50 +- basic_content/using/using_derived | Bin 9320 -> 0 bytes basic_content/using/using_derived.cpp | 31 +- basic_content/using/using_global | Bin 9296 -> 0 bytes basic_content/using/using_global.cpp | 40 +- basic_content/using/using_typedef | Bin 22024 -> 0 bytes basic_content/using/using_typedef.cpp | 28 +- basic_content/virtual/set1/BUILD | 8 + basic_content/virtual/set1/emp | Bin 14464 -> 0 bytes basic_content/virtual/set1/emp.cpp | 76 ++- basic_content/virtual/set2/BUILD | 8 + basic_content/virtual/set2/default_arg.cpp | 43 +- basic_content/virtual/set3/BUILD | 57 ++ basic_content/virtual/set3/copy_consrtuct.cpp | 54 +- basic_content/virtual/set3/full_virde.cpp | 41 +- basic_content/virtual/set3/inline_virtual.cpp | 52 +- basic_content/virtual/set3/static_error.cpp | 4 +- basic_content/virtual/set3/vir_con.cpp | 336 +++++------- basic_content/virtual/set3/vir_de.cpp | 45 +- .../virtual/set3/virtual_function.cpp | 38 +- .../virtual/set3/virtual_function1.cpp | 33 +- basic_content/virtual/set3/virtual_inline.cpp | 55 +- basic_content/virtual/set4/BUILD | 8 + basic_content/virtual/set4/rtti | Bin 14944 -> 0 bytes basic_content/virtual/set4/rtti.cpp | 54 +- basic_content/virtual/set4/warn_rtti.cpp | 34 +- basic_content/volatile/BUILD | 15 + basic_content/volatile/README.md | 2 +- basic_content/volatile/noopt_vola.cpp | 19 +- basic_content/volatile/nv | Bin 8672 -> 0 bytes basic_content/volatile/volatile.cpp | 19 +- basic_content/vptr_vtable/BUILD | 8 + basic_content/vptr_vtable/vptr1.cpp | 126 ++--- c++2.0/c++11/README.md | 70 --- .../1_classInitializers/1.1_nest.cpp | 1 + .../1.2_nodefault_ctor.cpp | 1 + .../1_classInitializers/1.3_const.cpp | 1 + codingStyleIdioms/1_classInitializers/BUILD | 27 + .../1_classInitializers/initializer.cpp | 1 + codingStyleIdioms/2_enumclass/BUILD | 9 + codingStyleIdioms/3_RAII/BUILD | 39 ++ codingStyleIdioms/4_copy-swap/BUILD | 9 + codingStyleIdioms/5_pImpl/.a.cpp.un~ | Bin 1460 -> 0 bytes codingStyleIdioms/5_pImpl/.pimplTime.cpp.un~ | Bin 10187 -> 0 bytes codingStyleIdioms/5_pImpl/.timePimpl.cpp.un~ | Bin 9179 -> 0 bytes codingStyleIdioms/5_pImpl/BUILD | 21 + codingStyleIdioms/5_pImpl/a.cpp~ | 24 - codingStyleIdioms/5_pImpl/pimplTime.cpp~ | 11 - codingStyleIdioms/5_pImpl/timePimpl.cpp~ | 1 - .../.idea/Threading_In_CPlusPlus.iml | 2 - .../Threading_In_CPlusPlus/.idea/misc.xml | 7 - .../Threading_In_CPlusPlus/.idea/modules.xml | 8 - .../.idea/workspace.xml | 510 ------------------ .../Threading_In_CPlusPlus/1.thread/BUILD | 15 + .../2.create_type/BUILD | 33 ++ .../3.join_detach/BUILD | 15 + .../Threading_In_CPlusPlus/4.mutex/BUILD | 9 + .../Threading_In_CPlusPlus/CMakeLists.txt | 16 - concurrency/concurrency_v1/chapter1/BUILD | 8 + .../concurrency_v1/chapter2/2.2_transfer.cpp | 5 +- .../concurrency_v1/chapter2/2.3_ownership.cpp | 1 + .../concurrency_v1/chapter2/2.4_runtime.cpp | 1 + concurrency/concurrency_v1/chapter2/BUILD | 30 ++ cpp2.0/cpp11/BUILD | 98 ++++ cpp2.0/cpp11/README.md | 70 +++ {c++2.0/c++11 => cpp2.0/cpp11}/alias.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/auto.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/constexpr.cpp | 4 +- {c++2.0/c++11 => cpp2.0/cpp11}/decltype.cpp | 22 +- .../c++11 => cpp2.0/cpp11}/default_delete.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/explicit.cpp | 55 +- {c++2.0/c++11 => cpp2.0/cpp11}/final.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/hash.cpp | 0 .../c++11 => cpp2.0/cpp11}/initializer.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/lambda.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/move.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/noexcept.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/nullptr.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/override.cpp | 14 +- {c++2.0/c++11 => cpp2.0/cpp11}/rvalue.cpp | 0 .../cpp11}/template_template.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/tuple.cpp | 0 {c++2.0/c++11 => cpp2.0/cpp11}/type_alias.cpp | 0 .../cpp11}/uniform_initialization.cpp | 0 cpp2.0/cpp11/variadic/BUILD | 38 ++ .../cpp11}/variadic/variadic.cpp | 0 .../cpp11}/variadic/variadic1.cpp | 0 .../cpp11}/variadic/variadic2.cpp | 0 .../cpp11}/variadic/variadic3_4.cpp | 0 .../cpp11}/variadic/variadic5.cpp | 0 .../cpp11}/variadic/variadic6.cpp | 0 .../cpp11}/variadic/variadic7.cpp | 0 design_pattern/producer_consumer/BUILD | 8 + .../producer_consumer/producer_consumer.cpp | 36 +- design_pattern/singleton/README.md | 4 +- .../singleton/barrier_singleton.cpp | 31 +- .../singleton/cpulpuls11_singleton.cpp | 43 +- design_pattern/singleton/dcl_singleton.cpp | 46 +- design_pattern/singleton/hungrysingleton.cpp | 12 +- design_pattern/singleton/iazysingleton.cpp | 15 +- design_pattern/singleton/lock_singleton.cpp | 19 +- .../singleton/pthreadoncesingleton.cpp | 28 +- .../singleton/static_local_singleton.cpp | 15 +- {effective_c++ => effective_cpp}/2.cpp | 0 effective_cpp/BUILD | 9 + english/basic_content/assert/README.md | 10 +- english/basic_content/assert/ignore_assert.c | 6 +- english/basic_content/explicit/explicit | Bin 9288 -> 0 bytes english/basic_content/inline/README.md | 2 +- learn_class/modern_C++_30/.CMakeLists.txt.un~ | Bin 1445 -> 0 bytes learn_class/modern_C++_30/CMakeLists.txt | 68 --- learn_class/modern_C++_30/CMakeLists.txt~ | 64 --- learn_class/modern_C++_30/RAII/RAII.cpp | 96 ---- learn_class/modern_C++_30/RAII/heap.cpp | 38 -- learn_class/modern_C++_30/RAII/stack.cpp | 26 - learn_class/modern_C++_30/SFINAE/SFINAE.cpp | 41 -- .../modern_C++_30/compilercompute/IF.cpp | 54 -- .../compilercompute/WhileLoop.cpp | 77 --- .../modern_C++_30/compilercompute/a.out | Bin 8888 -> 0 bytes .../compilercompute/factorial.cpp | 24 - .../modern_C++_30/compilercompute/fmap.cpp | 39 -- learn_class/modern_C++_30/constexpr/a.out | Bin 8744 -> 0 bytes .../modern_C++_30/constexpr/container.cpp | 43 -- .../modern_C++_30/constexpr/newconstexpr.cpp | 78 --- .../constexpr/output_container.h | 150 ------ learn_class/modern_C++_30/constexpr/sqrt.cpp | 47 -- learn_class/modern_C++_30/constexpr/test3.cpp | 31 -- .../modern_C++_30/container1/container.cpp | 21 - .../container1/output_container.h | 148 ----- .../modern_C++_30/container1/vector_l.cpp | 64 --- .../modern_C++_30/container2/array.cpp | 53 -- learn_class/modern_C++_30/container2/hash.cpp | 46 -- .../container2/priority_queue.cpp | 30 -- .../container2/relacontainer.cpp | 73 --- .../modern_C++_30/container2/unorder.cpp | 41 -- .../modern_C++_30/functionLambda/adder.cpp | 34 -- .../functionLambda/autoLambda.cpp | 64 --- .../modern_C++_30/functionLambda/function.cpp | 32 -- .../modern_C++_30/literalAssert/assert.cpp | 13 - .../literalAssert/default_delete.cpp | 18 - .../modern_C++_30/literalAssert/literal.cpp | 81 --- .../literalAssert/overridefinal.cpp | 30 -- learn_class/modern_C++_30/returnObj/all.cpp | 97 ---- .../modern_C++_30/returnObj/returnObj1.cpp | 49 -- .../modern_C++_30/returnObj/returnObj2.cpp | 48 -- .../modern_C++_30/returnObj/returnObj3.cpp | 51 -- .../modern_C++_30/returnObj/returnObj4.cpp | 35 -- .../modern_C++_30/returnObj/returnObj5.cpp | 31 -- .../modern_C++_30/smart_ptr/auto_scope.cpp | 120 ----- .../modern_C++_30/smart_ptr/shared_ptr.cpp | 232 -------- .../modern_C++_30/smart_ptr/unique_ptr.cpp | 79 --- .../modern_C++_30/smart_ptr/unique_ptr_U.cpp | 72 --- learn_class/modern_cpp_30/RAII/BUILD | 21 + learn_class/modern_cpp_30/RAII/RAII.cpp | 82 +++ learn_class/modern_cpp_30/RAII/heap.cpp | 35 ++ learn_class/modern_cpp_30/RAII/stack.cpp | 23 + .../SFINAE/README.md | 0 learn_class/modern_cpp_30/SFINAE/SFINAE.cpp | 33 ++ .../SFINAE/SFINAE.pdf | Bin .../SFINAE/sfinae paper/auto.cpp | 0 .../SFINAE/sfinae paper/blending1.cpp | 0 .../SFINAE/sfinae paper/blending2.cpp | 0 .../sfinae paper/combiningAndGenius.cpp | 0 .../SFINAE/sfinae paper/constexpr.cpp | 0 .../SFINAE/sfinae paper/decltype.cpp | 0 .../SFINAE/sfinae paper/fis_valid.cpp | 0 .../SFINAE/sfinae paper/hana.cpp | 0 .../SFINAE/sfinae paper/is_valid.cpp | 0 .../SFINAE/sfinae paper/lambda.cpp | 0 .../SFINAE/sfinae paper/overload1.cpp | 0 .../SFINAE/sfinae paper/overload2.cpp | 0 .../SFINAE/sfinae paper/p1SFINAE.cpp | 0 .../SFINAE/sfinae paper/p2SFINAE.cpp | 0 .../SFINAE/sfinae paper/packis_valid.cpp | 0 .../SFINAE/sfinae paper/serialize.cpp | 0 .../SFINAE/sfinae paper/sizeof1.cpp | 0 .../SFINAE/sfinae paper/sizeof2.cpp | 0 .../SFINAE/sfinae paper/structData.h | 0 .../SFINAE/sfinae paper/timeGenius.cpp | 0 .../modern_cpp_30/compilercompute/BUILD | 27 + .../modern_cpp_30/compilercompute/IF.cpp | 43 ++ .../compilercompute/WhileLoop.cpp | 57 ++ .../compilercompute/factorial.cpp | 20 + .../modern_cpp_30/compilercompute/fmap.cpp | 34 ++ learn_class/modern_cpp_30/compilerpoly/BUILD | 9 + .../compilerpoly/README.md | 0 .../compilerpoly/template.cpp | 0 learn_class/modern_cpp_30/constexpr/BUILD | 30 ++ .../modern_cpp_30/constexpr/container.cpp | 32 ++ .../modern_cpp_30/constexpr/newconstexpr.cpp | 73 +++ .../constexpr/output_container.h | 134 +++++ learn_class/modern_cpp_30/constexpr/sqrt.cpp | 40 ++ learn_class/modern_cpp_30/constexpr/test3.cpp | 25 + learn_class/modern_cpp_30/container1/BUILD | 27 + .../modern_cpp_30/container1/container.cpp | 17 + .../container1/output_container.h | 134 +++++ .../modern_cpp_30/container1/vector_l.cpp | 45 ++ learn_class/modern_cpp_30/container2/BUILD | 48 ++ .../modern_cpp_30/container2/array.cpp | 42 ++ learn_class/modern_cpp_30/container2/hash.cpp | 37 ++ .../container2/priority_queue.cpp | 26 + .../container2/relacontainer.cpp | 57 ++ .../modern_cpp_30/container2/unorder.cpp | 31 ++ learn_class/modern_cpp_30/exception/BUILD | 9 + .../exception/exception.cpp | 0 .../modern_cpp_30/functionLambda/BUILD | 21 + .../modern_cpp_30/functionLambda/adder.cpp | 32 ++ .../functionLambda/autoLambda.cpp | 58 ++ .../modern_cpp_30/functionLambda/function.cpp | 19 + learn_class/modern_cpp_30/literalAssert/BUILD | 15 + .../modern_cpp_30/literalAssert/assert.cpp | 14 + .../literalAssert/default_delete.cpp | 18 + .../modern_cpp_30/literalAssert/literal.cpp | 71 +++ .../literalAssert/overridefinal.cpp | 29 + .../memorymodel_atomic/barrier_singleton.cpp | 0 .../cpulpuls11_singleton.cpp | 0 .../memorymodel_atomic/dcl_singleton.cpp | 0 .../memorymodel_atomic/hungrysingleton.cpp | 0 .../memorymodel_atomic/iazysingleton.cpp | 0 .../memorymodel_atomic/lock_singleton.cpp | 0 .../pthreadoncesingleton.cpp | 0 .../static_local_singleton.cpp | 0 learn_class/modern_cpp_30/obj/BUILD | 39 ++ learn_class/modern_cpp_30/obj/all.cpp | 93 ++++ learn_class/modern_cpp_30/obj/obj1.cpp | 43 ++ learn_class/modern_cpp_30/obj/obj2.cpp | 46 ++ learn_class/modern_cpp_30/obj/obj3.cpp | 48 ++ learn_class/modern_cpp_30/obj/obj4.cpp | 31 ++ learn_class/modern_cpp_30/obj/obj5.cpp | 26 + learn_class/modern_cpp_30/reference/BUILD | 44 ++ .../reference/collapses.cpp | 0 .../reference/forward.cpp | 2 +- .../reference/lifetime.cpp | 39 +- .../reference/ref.cpp} | 0 .../reference/reference.cpp | 0 learn_class/modern_cpp_30/reference/shape.h | 41 ++ .../smart_ptr/README.md | 0 .../modern_cpp_30/smart_ptr/auto_scope.cpp | 102 ++++ .../modern_cpp_30/smart_ptr/shared_ptr.cpp | 221 ++++++++ .../modern_cpp_30/smart_ptr/unique_ptr.cpp | 71 +++ .../modern_cpp_30/smart_ptr/unique_ptr_U.cpp | 66 +++ practical_exercises/.README.md.un~ | Bin 28997 -> 0 bytes .../10_day_practice/day1/BUILD | 23 + .../10_day_practice/day1/annotate.cpp | 8 +- .../10_day_practice/day1/print.cpp | 24 + .../10_day_practice/day1/runnian.cpp | 17 + .../10_day_practice/day1/union.cpp | 21 + ...3\345\215\260\347\273\203\344\271\240.cpp" | 24 - ...7\345\220\246\351\227\260\345\271\264.cpp" | 20 - ...0\344\275\223\345\255\246\344\271\240.cpp" | 18 - .../10_day_practice/day10/file/10-4.cpp | 30 ++ .../10_day_practice/day10/file/12-1.cpp | 19 +- .../10_day_practice/day10/file/12-2.cpp | 12 + .../10_day_practice/day10/file/12-3.cpp | 19 + .../10_day_practice/day10/file/12-5.cpp | 20 + .../10_day_practice/day10/file/12-6.cpp | 37 ++ .../10_day_practice/day10/file/12-7.cpp | 20 + .../10_day_practice/day10/file/12-9.cpp | 45 ++ .../10_day_practice/day10/file/BUILD | 48 ++ .../10_day_practice/day10/file/input/BUILD | 18 + .../10_day_practice/day10/file/input/get.cpp | 19 +- .../10_day_practice/day10/file/input/get2.cpp | 44 ++ .../day10/file/input/getline.cpp | 38 ++ .../10_day_practice/day10/file/practice.cpp | 64 +++ .../12-2\345\272\224\347\224\250.cpp" | 13 - .../12-3.cpp" | 18 - .../12-5.cpp" | 17 - .../12-6.cpp" | 28 - .../12-7.cpp" | 21 - .../12-9.cpp" | 41 -- .../get(a,size)12-2-1.cpp" | 44 -- .../getline()12-2-2.cpp" | 38 -- ...5\207\272\346\240\274\345\274\21710-4.cpp" | 28 - ...6\345\240\202\347\273\203\344\271\240.cpp" | 63 --- .../10_day_practice/day2/BUILD | 48 ++ .../10_day_practice/day2/compute.cpp | 26 + .../10_day_practice/day2/enum.cpp | 17 + .../10_day_practice/day2/hanoi.cpp | 25 + .../10_day_practice/day2/pow.cpp | 29 + .../10_day_practice/day2/rec1.cpp | 21 + .../10_day_practice/day2/rec2.cpp | 21 + .../10_day_practice/day2/shaizi.cpp | 54 ++ .../10_day_practice/day2/st.cpp | 19 + .../10_day_practice/day2/static.cpp | 37 ++ ...\347\232\204n\346\254\241\346\226\271.cpp" | 32 -- .../\346\216\267\351\252\260\345\255\220.cpp" | 63 --- ...2\344\270\276\347\261\273\345\236\213.cpp" | 21 - .../day2/\346\261\202\317\200.cpp" | 28 - .../\346\261\211\350\257\272\345\241\224.cpp" | 33 -- .../\347\273\223\346\236\204\344\275\223.cpp" | 21 - .../day2/\351\200\222\345\275\2221.cpp" | 25 - .../day2/\351\200\222\345\275\2222.cpp" | 25 - ...1\346\200\201\345\217\230\351\207\217.cpp" | 32 -- .../10_day_practice/day3/BUILD | 38 ++ .../10_day_practice/day3/inline.cpp | 15 + .../10_day_practice/day3/pratice.cpp | 52 ++ .../10_day_practice/day3/predeclare.cpp | 43 +- .../10_day_practice/day3/static_data.cpp | 44 ++ .../10_day_practice/day3/static_member1.cpp | 27 + .../10_day_practice/day3/static_member2.cpp | 23 + .../10_day_practice/day3/swap.cpp | 19 + ...4\346\225\260\344\272\244\346\215\242.cpp" | 21 - ...5\350\201\224\345\207\275\346\225\260.cpp" | 18 - ...0\347\273\203\344\271\240\351\242\230.cpp" | 61 --- ...\345\221\230\345\207\275\346\225\2601.cpp" | 30 -- ...\345\221\230\345\207\275\346\225\2602.cpp" | 24 - ...0\346\215\256\346\210\220\345\221\230.cpp" | 39 -- .../10_day_practice/day4/clock/BUILD | 13 + .../10_day_practice/day4/clock/operator.cpp | 25 + .../day4/clock/operator_plus.cpp | 52 ++ .../10_day_practice/day4/const/BUILD | 13 + .../10_day_practice/day4/const/obj_func.cpp | 40 ++ .../10_day_practice/day4/const/obj_ref.cpp | 27 + .../10_day_practice/day4/const/readme.md | 0 ...6\345\270\270\345\274\225\347\224\250.cpp" | 24 - ...6\351\200\232\345\207\275\346\225\260.cpp" | 41 -- .../10_day_practice/day4/copy_ctor/BUILD | 16 + .../10_day_practice/day4/copy_ctor/clock.cpp | 38 ++ .../10_day_practice/day4/copy_ctor/clock.h | 26 + .../10_day_practice/day4/friend/BUILD | 13 + .../10_day_practice/day4/friend/class.cpp | 52 +- .../10_day_practice/day4/friend/func.cpp | 27 + .../10_day_practice/day4/friend/readme.md | 0 ...3\345\205\203\346\250\241\345\235\227.cpp" | 31 -- .../clock.cpp" | 47 -- .../clock.h" | 26 - ...)\347\232\204\346\227\266\351\222\237.cpp" | 25 - ...+\347\232\204\346\227\266\351\222\237.cpp" | 53 -- .../10_day_practice/day5/ctor_dtor/BUILD | 33 ++ .../10_day_practice/day5/ctor_dtor/cseq.cpp | 41 ++ .../10_day_practice/day5/ctor_dtor/ctor.cpp | 29 + .../10_day_practice/day5/ctor_dtor/ctor_d.cpp | 44 ++ .../10_day_practice/day5/ctor_dtor/noctor.cpp | 15 + .../10_day_practice/day5/ctor_dtor/param.cpp | 27 + .../10_day_practice/day5/ctor_dtor/readme.md | 0 .../10_day_practice/day5/ctor_dtor/seq.cpp | 41 ++ .../10_day_practice/day5/inherit_access/BUILD | 23 + .../day5/inherit_access/private.cpp | 31 ++ .../day5/inherit_access/protected.cpp | 33 ++ .../day5/inherit_access/protected_inherit.cpp | 37 +- .../day5/inherit_access/public.cpp | 27 + .../day5/inherit_access/readme.md | 0 .../10_day_practice/day5/rela/BUILD | 8 + .../10_day_practice/day5/rela/readme.md | 0 .../10_day_practice/day5/rela/rela.cpp | 55 ++ .../10_day_practice/day5/rule/BUILD | 8 + .../10_day_practice/day5/rule/direct.cpp | 26 + .../10_day_practice/day5/rule/readme.md | 0 .../10_day_practice/day5/virtual/BUILD | 23 + .../10_day_practice/day5/virtual/example1.cpp | 17 + .../10_day_practice/day5/virtual/example2.cpp | 17 + .../10_day_practice/day5/virtual/init.cpp | 39 ++ .../10_day_practice/day5/virtual/readme.md | 0 .../10_day_practice/day5/virtual/seq.cpp | 33 ++ ...347\261\273(\351\207\215\350\246\201).cpp" | 55 -- ...3\347\224\250\346\254\241\345\272\217.cpp" | 40 -- ...4\351\200\240\351\241\272\345\272\217.cpp" | 43 -- ...4\346\264\276\347\224\237\347\261\273.cpp" | 15 - ...4\351\200\240\345\207\275\346\225\260.cpp" | 27 - ...3\347\224\250\351\241\272\345\272\217.cpp" | 46 -- ...0\351\200\222\345\217\202\346\225\260.cpp" | 24 - ...5\346\212\244\346\210\220\345\221\230.cpp" | 36 -- ...4\346\234\211\347\273\247\346\211\277.cpp" | 30 -- ...1\346\234\211\347\273\247\346\211\277.cpp" | 25 - .../\344\276\2131.cpp" | 18 - .../\344\276\2132.cpp" | 18 - ...3\345\210\235\345\247\213\345\214\226.cpp" | 33 -- ...345\272\217(\351\207\215\350\246\201).cpp" | 31 -- ...4\346\216\245\345\237\272\347\261\273.cpp" | 24 - .../10_day_practice/day6/abstract_class/BUILD | 8 + .../day6/abstract_class/main.cpp | 43 ++ .../10_day_practice/day6/readme.md | 82 +-- .../10_day_practice/day6/virtual_func/BUILD | 28 + .../day6/virtual_func/example.cpp | 93 ++++ .../day6/virtual_func/virtual.cpp | 64 +++ .../day6/virtual_func/virtual_dtor.cpp | 24 + .../day6/virtual_func/virtual_feature.cpp | 37 ++ .../10_day_practice/day6/virtual_func/vis.cpp | 18 + .../\346\212\275\350\261\241\347\261\273.cpp" | 46 -- ...7\347\261\273\347\211\210\346\234\254.cpp" | 17 - ...6\347\250\213\345\256\236\344\276\213.cpp" | 92 ---- ...5\346\225\260\344\276\213\345\255\220.cpp" | 66 --- ...5\346\225\260\347\211\271\346\200\247.cpp" | 30 -- ...0\346\236\204\345\207\275\346\225\260.cpp" | 22 - ...)\347\232\204\346\227\266\351\222\237.cpp" | 25 - .../=\344\276\213\351\242\230.cpp" | 16 - .../example1.cpp" | 21 - ...351\242\230(\351\207\215\347\202\271).cpp" | 50 -- .../day7/binary_operator/BUILD | 13 + .../day7/binary_operator/friend_operator.cpp | 85 +++ .../day7/binary_operator/operator.cpp | 63 +++ .../10_day_practice/day7/brackets/BUILD | 8 + .../10_day_practice/day7/brackets/brac.cpp | 25 + .../10_day_practice/day7/equal_operator/BUILD | 8 + .../day7/equal_operator/equal_operator.cpp | 18 + .../10_day_practice/day7/example/BUILD | 8 + .../10_day_practice/day7/example/example.cpp | 86 +++ .../day7/index_parentheses/BUILD | 8 + .../day7/index_parentheses/example.cpp | 31 ++ .../10_day_practice/day7/readme.md | 116 ++-- .../day7/subscript_operator/BUILD | 8 + .../subscript_operator/subscript_operator.cpp | 51 ++ .../10_day_practice/day7/unary_operator/BUILD | 13 + .../day7/unary_operator/time_counter.cpp | 48 ++ .../day7/unary_operator/time_increase.cpp | 75 +++ ...2\345\242\236\350\277\220\347\256\227.cpp" | 76 --- ...5\345\220\216\350\207\252\345\242\236.cpp" | 49 -- ...7\347\254\246\351\207\215\350\275\275.cpp" | 67 --- ...7\347\254\246\345\256\236\347\216\260.cpp" | 85 --- .../\351\207\215\350\246\201.cpp" | 91 ---- .../10_day_practice/day8/STL/map_se.cpp | 48 -- .../10_day_practice/day8/class_template/BUILD | 13 + .../day8/class_template/spec.cpp | 79 +++ .../day8/class_template/stack.cpp | 75 +++ .../10_day_practice/day8/func/BUILD | 23 + .../10_day_practice/day8/func/main.cpp | 41 +- .../10_day_practice/day8/func/max.cpp | 18 + .../10_day_practice/day8/func/max_spec.cpp | 30 ++ .../10_day_practice/day8/func/sort.cpp | 33 ++ .../10_day_practice/day8/stl/BUILD | 8 + .../10_day_practice/day8/stl/map.cpp | 47 ++ .../\344\276\2131.cpp" | 36 -- ...1\346\235\277\347\211\271\345\214\226.cpp" | 31 -- ...2\346\234\200\345\244\247\345\200\274.cpp" | 21 - .../\346\250\241\346\213\237\346\240\210.cpp" | 78 --- ...1\346\235\277\347\211\271\345\214\226.cpp" | 72 --- .../10_day_practice/day9/exception/1.cpp | 17 + .../10_day_practice/day9/exception/10.cpp | 43 ++ .../10_day_practice/day9/exception/2.cpp | 16 + .../10_day_practice/day9/exception/3.cpp | 23 + .../10_day_practice/day9/exception/4.cpp | 23 + .../10_day_practice/day9/exception/5.cpp | 25 + .../10_day_practice/day9/exception/6.cpp | 22 + .../10_day_practice/day9/exception/7-1.cpp | 34 ++ .../10_day_practice/day9/exception/7.cpp | 24 + .../10_day_practice/day9/exception/8.cpp | 45 ++ .../10_day_practice/day9/exception/9-2.cpp | 27 + .../10_day_practice/day9/exception/9.cpp | 45 ++ .../10_day_practice/day9/exception/BUILD | 63 +++ .../10_day_practice/day9/readme.md | 34 +- .../1.cpp" | 19 - .../10.cpp" | 42 -- .../2.cpp" | 17 - .../3.cpp" | 19 - .../4.cpp" | 20 - .../5.cpp" | 19 - .../6.cpp" | 18 - .../7-1.cpp" | 33 -- .../7.cpp" | 24 - .../8.cpp" | 39 -- .../9-2.cpp" | 35 -- .../9.cpp" | 37 -- practical_exercises/README.md~ | 2 - practical_exercises/key_exercises/BUILD | 78 +++ practical_exercises/key_exercises/README.md | 30 +- practical_exercises/key_exercises/array.cpp | 14 + .../key_exercises/array_template.cpp | 80 +++ .../key_exercises/bracket_overloading.cpp | 51 ++ practical_exercises/key_exercises/clock.cpp | 85 +++ .../key_exercises/func_temp.cpp | 11 +- .../key_exercises/io_operator.cpp | 40 ++ .../key_exercises/io_operator_overload.cpp | 43 ++ .../key_exercises/map_insert_look.cpp | 80 +++ .../key_exercises/operator_cast.cpp | 41 ++ .../key_exercises/operator_circle.cpp | 25 + practical_exercises/key_exercises/output.cpp | 19 + .../key_exercises/override.cpp | 87 +++ .../key_exercises/read_file.cpp | 74 +++ practical_exercises/key_exercises/stack.cpp | 60 +++ practical_exercises/key_exercises/try.cpp | 25 + ...4\345\217\267\351\207\215\350\275\275.cpp" | 58 -- ...0\346\200\201\346\225\260\347\273\204.cpp" | 14 - ...5\344\270\216\346\237\245\346\211\276.cpp" | 78 --- ...2\345\270\270\346\215\225\350\216\267.cpp" | 25 - ...7\347\254\246\351\207\215\350\275\275.cpp" | 93 ---- ...1\346\235\277\344\271\213\346\240\210.cpp" | 63 --- ...6\344\271\213\346\225\260\347\273\204.cpp" | 76 --- ...7\344\270\216\345\260\201\350\243\205.cpp" | 90 ---- ...6\347\273\274\345\220\210\351\242\230.cpp" | 73 --- ...7\347\254\246\351\207\215\350\275\275.cpp" | 41 -- ...3\345\207\272\351\207\215\350\275\275.cpp" | 41 -- ...3\345\207\272\346\240\274\345\274\217.cpp" | 19 - ...2\345\210\266\350\275\254\346\215\242.cpp" | 35 -- ...7\347\232\204\346\227\266\351\222\237.cpp" | 25 - proj/README.md | 133 +++++ tool/output/BUILD | 18 + tool/output/container.cpp | 41 +- tool/output/output_container.h | 206 ++++--- 641 files changed, 10388 insertions(+), 9562 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 WORKSPACE create mode 100644 basic_content/abstract/BUILD create mode 100644 basic_content/abstract/abstract_base.h delete mode 100644 basic_content/abstract/test.cpp create mode 100644 basic_content/assert/BUILD create mode 100644 basic_content/bit/BUILD create mode 100644 basic_content/bit/bit.cpp delete mode 100644 basic_content/bit/learn.cpp create mode 100644 basic_content/c_poly/BUILD delete mode 100755 basic_content/c_poly/c++_examp delete mode 100755 basic_content/c_poly/c_examp create mode 100644 basic_content/const/BUILD create mode 100644 basic_content/const/class_const/c++11_example/BUILD create mode 100644 basic_content/const/class_const/c++11_example/apple.h delete mode 100755 basic_content/const/class_const/c++11_example/main create mode 100644 basic_content/const/class_const/first_example/BUILD create mode 100644 basic_content/const/class_const/first_example/apple.h create mode 100644 basic_content/const/class_const/overload_example/BUILD create mode 100644 basic_content/const/class_const/overload_example/apple.h delete mode 100755 basic_content/const/class_const/overload_example/main create mode 100644 basic_content/const/class_const/static_example/BUILD create mode 100644 basic_content/const/class_const/static_example/apple.h delete mode 100755 basic_content/const/class_const/static_example/main create mode 100644 basic_content/const/extern_const/BUILD create mode 100644 basic_content/const/funciton_const/condition1/BUILD create mode 100644 basic_content/const/funciton_const/condition2/BUILD delete mode 100755 basic_content/const/funciton_const/condition2/condition1 delete mode 100755 basic_content/const/funciton_const/condition2/condition3 create mode 100644 basic_content/const/funciton_const/condition3/BUILD delete mode 100755 basic_content/const/funciton_const/condition3/condition1 create mode 100644 basic_content/decltype/BUILD delete mode 100755 basic_content/decltype/decltype create mode 100644 basic_content/enum/BUILD delete mode 100755 basic_content/enum/classic_practice create mode 100644 basic_content/explicit/BUILD delete mode 100755 basic_content/explicit/explicit create mode 100644 basic_content/extern/extern_c++/BUILD delete mode 100644 basic_content/extern/extern_c++/add.o delete mode 100755 basic_content/extern/extern_c++/main create mode 100644 basic_content/extern/extern_c/BUILD delete mode 100644 basic_content/extern/extern_c/add.o delete mode 100755 basic_content/extern/extern_c/main create mode 100644 basic_content/friend/BUILD delete mode 100755 basic_content/friend/friend_class delete mode 100755 basic_content/friend/friend_func create mode 100644 basic_content/func_pointer/BUILD delete mode 100755 basic_content/func_pointer/func1 create mode 100644 basic_content/inline/BUILD delete mode 100755 basic_content/inline/inline create mode 100644 basic_content/macro/BUILD delete mode 100755 basic_content/macro/do_while delete mode 100755 basic_content/macro/sig_examp delete mode 100644 basic_content/maohao/.README.md.un~ create mode 100644 basic_content/maohao/BUILD delete mode 100644 basic_content/maohao/README.md~ create mode 100644 basic_content/pointer_refer/BUILD delete mode 100755 basic_content/pointer_refer/copy_construct delete mode 100755 basic_content/pointer_refer/effec create mode 100644 basic_content/sizeof/BUILD create mode 100644 basic_content/static/BUILD delete mode 100755 basic_content/static/demo create mode 100644 basic_content/struct/BUILD delete mode 100755 basic_content/struct/ext delete mode 100755 basic_content/struct/sf delete mode 100755 basic_content/struct/stff delete mode 100755 basic_content/struct/struct_func create mode 100644 basic_content/this/BUILD delete mode 100755 basic_content/this/person create mode 100644 basic_content/union/BUILD delete mode 100755 basic_content/union/union create mode 100644 basic_content/using/BUILD delete mode 100755 basic_content/using/derived_base delete mode 100755 basic_content/using/using_derived delete mode 100755 basic_content/using/using_global delete mode 100755 basic_content/using/using_typedef create mode 100644 basic_content/virtual/set1/BUILD delete mode 100755 basic_content/virtual/set1/emp create mode 100644 basic_content/virtual/set2/BUILD create mode 100644 basic_content/virtual/set3/BUILD create mode 100644 basic_content/virtual/set4/BUILD delete mode 100755 basic_content/virtual/set4/rtti create mode 100644 basic_content/volatile/BUILD delete mode 100755 basic_content/volatile/nv create mode 100644 basic_content/vptr_vtable/BUILD delete mode 100644 c++2.0/c++11/README.md rename "codingStyleIdioms/1_classInitializers/1.1_\347\261\273\344\271\213\351\227\264\345\265\214\345\245\227.cpp" => codingStyleIdioms/1_classInitializers/1.1_nest.cpp (97%) rename "codingStyleIdioms/1_classInitializers/1.2_\346\227\240\351\273\230\350\256\244\346\236\204\351\200\240\347\232\204\347\273\247\346\211\277.cpp" => codingStyleIdioms/1_classInitializers/1.2_nodefault_ctor.cpp (95%) rename "codingStyleIdioms/1_classInitializers/1.3_\347\261\273\344\270\255const\346\225\260\346\215\256\346\210\220\345\221\230\343\200\201\345\274\225\347\224\250\346\225\260\346\215\256\346\210\220\345\221\230.cpp" => codingStyleIdioms/1_classInitializers/1.3_const.cpp (84%) create mode 100644 codingStyleIdioms/1_classInitializers/BUILD create mode 100644 codingStyleIdioms/2_enumclass/BUILD create mode 100644 codingStyleIdioms/3_RAII/BUILD create mode 100644 codingStyleIdioms/4_copy-swap/BUILD delete mode 100644 codingStyleIdioms/5_pImpl/.a.cpp.un~ delete mode 100644 codingStyleIdioms/5_pImpl/.pimplTime.cpp.un~ delete mode 100644 codingStyleIdioms/5_pImpl/.timePimpl.cpp.un~ create mode 100644 codingStyleIdioms/5_pImpl/BUILD delete mode 100644 codingStyleIdioms/5_pImpl/a.cpp~ delete mode 100644 codingStyleIdioms/5_pImpl/pimplTime.cpp~ delete mode 100644 codingStyleIdioms/5_pImpl/timePimpl.cpp~ delete mode 100644 concurrency/Threading_In_CPlusPlus/.idea/Threading_In_CPlusPlus.iml delete mode 100644 concurrency/Threading_In_CPlusPlus/.idea/misc.xml delete mode 100644 concurrency/Threading_In_CPlusPlus/.idea/modules.xml delete mode 100644 concurrency/Threading_In_CPlusPlus/.idea/workspace.xml create mode 100644 concurrency/Threading_In_CPlusPlus/1.thread/BUILD create mode 100644 concurrency/Threading_In_CPlusPlus/2.create_type/BUILD create mode 100644 concurrency/Threading_In_CPlusPlus/3.join_detach/BUILD create mode 100644 concurrency/Threading_In_CPlusPlus/4.mutex/BUILD delete mode 100644 concurrency/Threading_In_CPlusPlus/CMakeLists.txt create mode 100644 concurrency/concurrency_v1/chapter1/BUILD create mode 100644 concurrency/concurrency_v1/chapter2/BUILD create mode 100644 cpp2.0/cpp11/BUILD create mode 100644 cpp2.0/cpp11/README.md rename {c++2.0/c++11 => cpp2.0/cpp11}/alias.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/auto.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/constexpr.cpp (98%) rename {c++2.0/c++11 => cpp2.0/cpp11}/decltype.cpp (74%) rename {c++2.0/c++11 => cpp2.0/cpp11}/default_delete.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/explicit.cpp (61%) rename {c++2.0/c++11 => cpp2.0/cpp11}/final.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/hash.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/initializer.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/lambda.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/move.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/noexcept.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/nullptr.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/override.cpp (82%) rename {c++2.0/c++11 => cpp2.0/cpp11}/rvalue.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/template_template.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/tuple.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/type_alias.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/uniform_initialization.cpp (100%) create mode 100644 cpp2.0/cpp11/variadic/BUILD rename {c++2.0/c++11 => cpp2.0/cpp11}/variadic/variadic.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/variadic/variadic1.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/variadic/variadic2.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/variadic/variadic3_4.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/variadic/variadic5.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/variadic/variadic6.cpp (100%) rename {c++2.0/c++11 => cpp2.0/cpp11}/variadic/variadic7.cpp (100%) create mode 100644 design_pattern/producer_consumer/BUILD rename {effective_c++ => effective_cpp}/2.cpp (100%) create mode 100644 effective_cpp/BUILD delete mode 100755 english/basic_content/explicit/explicit delete mode 100644 learn_class/modern_C++_30/.CMakeLists.txt.un~ delete mode 100644 learn_class/modern_C++_30/CMakeLists.txt delete mode 100644 learn_class/modern_C++_30/CMakeLists.txt~ delete mode 100644 learn_class/modern_C++_30/RAII/RAII.cpp delete mode 100644 learn_class/modern_C++_30/RAII/heap.cpp delete mode 100644 learn_class/modern_C++_30/RAII/stack.cpp delete mode 100644 learn_class/modern_C++_30/SFINAE/SFINAE.cpp delete mode 100644 learn_class/modern_C++_30/compilercompute/IF.cpp delete mode 100644 learn_class/modern_C++_30/compilercompute/WhileLoop.cpp delete mode 100755 learn_class/modern_C++_30/compilercompute/a.out delete mode 100644 learn_class/modern_C++_30/compilercompute/factorial.cpp delete mode 100644 learn_class/modern_C++_30/compilercompute/fmap.cpp delete mode 100755 learn_class/modern_C++_30/constexpr/a.out delete mode 100644 learn_class/modern_C++_30/constexpr/container.cpp delete mode 100644 learn_class/modern_C++_30/constexpr/newconstexpr.cpp delete mode 100644 learn_class/modern_C++_30/constexpr/output_container.h delete mode 100644 learn_class/modern_C++_30/constexpr/sqrt.cpp delete mode 100644 learn_class/modern_C++_30/constexpr/test3.cpp delete mode 100644 learn_class/modern_C++_30/container1/container.cpp delete mode 100644 learn_class/modern_C++_30/container1/output_container.h delete mode 100644 learn_class/modern_C++_30/container1/vector_l.cpp delete mode 100644 learn_class/modern_C++_30/container2/array.cpp delete mode 100644 learn_class/modern_C++_30/container2/hash.cpp delete mode 100644 learn_class/modern_C++_30/container2/priority_queue.cpp delete mode 100644 learn_class/modern_C++_30/container2/relacontainer.cpp delete mode 100644 learn_class/modern_C++_30/container2/unorder.cpp delete mode 100644 learn_class/modern_C++_30/functionLambda/adder.cpp delete mode 100644 learn_class/modern_C++_30/functionLambda/autoLambda.cpp delete mode 100644 learn_class/modern_C++_30/functionLambda/function.cpp delete mode 100644 learn_class/modern_C++_30/literalAssert/assert.cpp delete mode 100644 learn_class/modern_C++_30/literalAssert/default_delete.cpp delete mode 100644 learn_class/modern_C++_30/literalAssert/literal.cpp delete mode 100644 learn_class/modern_C++_30/literalAssert/overridefinal.cpp delete mode 100644 learn_class/modern_C++_30/returnObj/all.cpp delete mode 100644 learn_class/modern_C++_30/returnObj/returnObj1.cpp delete mode 100644 learn_class/modern_C++_30/returnObj/returnObj2.cpp delete mode 100644 learn_class/modern_C++_30/returnObj/returnObj3.cpp delete mode 100644 learn_class/modern_C++_30/returnObj/returnObj4.cpp delete mode 100644 learn_class/modern_C++_30/returnObj/returnObj5.cpp delete mode 100644 learn_class/modern_C++_30/smart_ptr/auto_scope.cpp delete mode 100644 learn_class/modern_C++_30/smart_ptr/shared_ptr.cpp delete mode 100644 learn_class/modern_C++_30/smart_ptr/unique_ptr.cpp delete mode 100644 learn_class/modern_C++_30/smart_ptr/unique_ptr_U.cpp create mode 100644 learn_class/modern_cpp_30/RAII/BUILD create mode 100644 learn_class/modern_cpp_30/RAII/RAII.cpp create mode 100644 learn_class/modern_cpp_30/RAII/heap.cpp create mode 100644 learn_class/modern_cpp_30/RAII/stack.cpp rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/README.md (100%) create mode 100644 learn_class/modern_cpp_30/SFINAE/SFINAE.cpp rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/SFINAE.pdf (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/auto.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/blending1.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/blending2.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/combiningAndGenius.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/constexpr.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/decltype.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/fis_valid.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/hana.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/is_valid.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/lambda.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/overload1.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/overload2.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/p1SFINAE.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/p2SFINAE.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/packis_valid.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/serialize.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/sizeof1.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/sizeof2.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/structData.h (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/SFINAE/sfinae paper/timeGenius.cpp (100%) create mode 100644 learn_class/modern_cpp_30/compilercompute/BUILD create mode 100644 learn_class/modern_cpp_30/compilercompute/IF.cpp create mode 100644 learn_class/modern_cpp_30/compilercompute/WhileLoop.cpp create mode 100644 learn_class/modern_cpp_30/compilercompute/factorial.cpp create mode 100644 learn_class/modern_cpp_30/compilercompute/fmap.cpp create mode 100644 learn_class/modern_cpp_30/compilerpoly/BUILD rename learn_class/{modern_C++_30 => modern_cpp_30}/compilerpoly/README.md (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/compilerpoly/template.cpp (100%) create mode 100644 learn_class/modern_cpp_30/constexpr/BUILD create mode 100644 learn_class/modern_cpp_30/constexpr/container.cpp create mode 100644 learn_class/modern_cpp_30/constexpr/newconstexpr.cpp create mode 100644 learn_class/modern_cpp_30/constexpr/output_container.h create mode 100644 learn_class/modern_cpp_30/constexpr/sqrt.cpp create mode 100644 learn_class/modern_cpp_30/constexpr/test3.cpp create mode 100644 learn_class/modern_cpp_30/container1/BUILD create mode 100644 learn_class/modern_cpp_30/container1/container.cpp create mode 100644 learn_class/modern_cpp_30/container1/output_container.h create mode 100644 learn_class/modern_cpp_30/container1/vector_l.cpp create mode 100644 learn_class/modern_cpp_30/container2/BUILD create mode 100644 learn_class/modern_cpp_30/container2/array.cpp create mode 100644 learn_class/modern_cpp_30/container2/hash.cpp create mode 100644 learn_class/modern_cpp_30/container2/priority_queue.cpp create mode 100644 learn_class/modern_cpp_30/container2/relacontainer.cpp create mode 100644 learn_class/modern_cpp_30/container2/unorder.cpp create mode 100644 learn_class/modern_cpp_30/exception/BUILD rename learn_class/{modern_C++_30 => modern_cpp_30}/exception/exception.cpp (100%) create mode 100644 learn_class/modern_cpp_30/functionLambda/BUILD create mode 100644 learn_class/modern_cpp_30/functionLambda/adder.cpp create mode 100644 learn_class/modern_cpp_30/functionLambda/autoLambda.cpp create mode 100644 learn_class/modern_cpp_30/functionLambda/function.cpp create mode 100644 learn_class/modern_cpp_30/literalAssert/BUILD create mode 100644 learn_class/modern_cpp_30/literalAssert/assert.cpp create mode 100644 learn_class/modern_cpp_30/literalAssert/default_delete.cpp create mode 100644 learn_class/modern_cpp_30/literalAssert/literal.cpp create mode 100644 learn_class/modern_cpp_30/literalAssert/overridefinal.cpp rename learn_class/{modern_C++_30 => modern_cpp_30}/memorymodel_atomic/barrier_singleton.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/memorymodel_atomic/cpulpuls11_singleton.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/memorymodel_atomic/dcl_singleton.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/memorymodel_atomic/hungrysingleton.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/memorymodel_atomic/iazysingleton.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/memorymodel_atomic/lock_singleton.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/memorymodel_atomic/pthreadoncesingleton.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/memorymodel_atomic/static_local_singleton.cpp (100%) create mode 100644 learn_class/modern_cpp_30/obj/BUILD create mode 100644 learn_class/modern_cpp_30/obj/all.cpp create mode 100644 learn_class/modern_cpp_30/obj/obj1.cpp create mode 100644 learn_class/modern_cpp_30/obj/obj2.cpp create mode 100644 learn_class/modern_cpp_30/obj/obj3.cpp create mode 100644 learn_class/modern_cpp_30/obj/obj4.cpp create mode 100644 learn_class/modern_cpp_30/obj/obj5.cpp create mode 100644 learn_class/modern_cpp_30/reference/BUILD rename learn_class/{modern_C++_30 => modern_cpp_30}/reference/collapses.cpp (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/reference/forward.cpp (97%) rename learn_class/{modern_C++_30 => modern_cpp_30}/reference/lifetime.cpp (67%) rename learn_class/{modern_C++_30/reference/don'treturnReference.cpp => modern_cpp_30/reference/ref.cpp} (100%) rename learn_class/{modern_C++_30 => modern_cpp_30}/reference/reference.cpp (100%) create mode 100644 learn_class/modern_cpp_30/reference/shape.h rename learn_class/{modern_C++_30 => modern_cpp_30}/smart_ptr/README.md (100%) create mode 100644 learn_class/modern_cpp_30/smart_ptr/auto_scope.cpp create mode 100644 learn_class/modern_cpp_30/smart_ptr/shared_ptr.cpp create mode 100644 learn_class/modern_cpp_30/smart_ptr/unique_ptr.cpp create mode 100644 learn_class/modern_cpp_30/smart_ptr/unique_ptr_U.cpp delete mode 100644 practical_exercises/.README.md.un~ create mode 100644 practical_exercises/10_day_practice/day1/BUILD rename "practical_exercises/10_day_practice/day1/\346\263\250\351\207\212.cpp" => practical_exercises/10_day_practice/day1/annotate.cpp (60%) create mode 100644 practical_exercises/10_day_practice/day1/print.cpp create mode 100644 practical_exercises/10_day_practice/day1/runnian.cpp create mode 100644 practical_exercises/10_day_practice/day1/union.cpp delete mode 100644 "practical_exercises/10_day_practice/day1/\346\211\223\345\215\260\347\273\203\344\271\240.cpp" delete mode 100644 "practical_exercises/10_day_practice/day1/\346\230\257\345\220\246\351\227\260\345\271\264.cpp" delete mode 100644 "practical_exercises/10_day_practice/day1/\350\201\224\345\220\210\344\275\223\345\255\246\344\271\240.cpp" create mode 100644 practical_exercises/10_day_practice/day10/file/10-4.cpp rename "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-1.cpp" => practical_exercises/10_day_practice/day10/file/12-1.cpp (58%) create mode 100644 practical_exercises/10_day_practice/day10/file/12-2.cpp create mode 100644 practical_exercises/10_day_practice/day10/file/12-3.cpp create mode 100644 practical_exercises/10_day_practice/day10/file/12-5.cpp create mode 100644 practical_exercises/10_day_practice/day10/file/12-6.cpp create mode 100644 practical_exercises/10_day_practice/day10/file/12-7.cpp create mode 100644 practical_exercises/10_day_practice/day10/file/12-9.cpp create mode 100644 practical_exercises/10_day_practice/day10/file/BUILD create mode 100644 practical_exercises/10_day_practice/day10/file/input/BUILD rename "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/get()12-2.cpp" => practical_exercises/10_day_practice/day10/file/input/get.cpp (69%) create mode 100644 practical_exercises/10_day_practice/day10/file/input/get2.cpp create mode 100644 practical_exercises/10_day_practice/day10/file/input/getline.cpp create mode 100644 practical_exercises/10_day_practice/day10/file/practice.cpp delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-2\345\272\224\347\224\250.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-3.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-5.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-6.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-7.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/12-9.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/get(a,size)12-2-1.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\344\270\211\347\247\215\350\276\223\345\205\245\346\240\274\345\274\217/getline()12-2-2.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\350\276\223\345\207\272\346\240\274\345\274\21710-4.cpp" delete mode 100644 "practical_exercises/10_day_practice/day10/\346\226\207\344\273\266\344\276\213\351\242\230/\351\207\215\350\246\201!!!\350\257\276\345\240\202\347\273\203\344\271\240.cpp" create mode 100644 practical_exercises/10_day_practice/day2/BUILD create mode 100644 practical_exercises/10_day_practice/day2/compute.cpp create mode 100644 practical_exercises/10_day_practice/day2/enum.cpp create mode 100644 practical_exercises/10_day_practice/day2/hanoi.cpp create mode 100644 practical_exercises/10_day_practice/day2/pow.cpp create mode 100644 practical_exercises/10_day_practice/day2/rec1.cpp create mode 100644 practical_exercises/10_day_practice/day2/rec2.cpp create mode 100644 practical_exercises/10_day_practice/day2/shaizi.cpp create mode 100644 practical_exercises/10_day_practice/day2/st.cpp create mode 100644 practical_exercises/10_day_practice/day2/static.cpp delete mode 100644 "practical_exercises/10_day_practice/day2/x\347\232\204n\346\254\241\346\226\271.cpp" delete mode 100644 "practical_exercises/10_day_practice/day2/\346\216\267\351\252\260\345\255\220.cpp" delete mode 100644 "practical_exercises/10_day_practice/day2/\346\236\232\344\270\276\347\261\273\345\236\213.cpp" delete mode 100644 "practical_exercises/10_day_practice/day2/\346\261\202\317\200.cpp" delete mode 100644 "practical_exercises/10_day_practice/day2/\346\261\211\350\257\272\345\241\224.cpp" delete mode 100644 "practical_exercises/10_day_practice/day2/\347\273\223\346\236\204\344\275\223.cpp" delete mode 100644 "practical_exercises/10_day_practice/day2/\351\200\222\345\275\2221.cpp" delete mode 100644 "practical_exercises/10_day_practice/day2/\351\200\222\345\275\2222.cpp" delete mode 100644 "practical_exercises/10_day_practice/day2/\351\235\231\346\200\201\345\217\230\351\207\217.cpp" create mode 100644 practical_exercises/10_day_practice/day3/BUILD create mode 100644 practical_exercises/10_day_practice/day3/inline.cpp create mode 100644 practical_exercises/10_day_practice/day3/pratice.cpp rename "practical_exercises/10_day_practice/day3/\347\261\273\345\211\215\345\220\221\345\243\260\346\230\216.cpp" => practical_exercises/10_day_practice/day3/predeclare.cpp (54%) create mode 100644 practical_exercises/10_day_practice/day3/static_data.cpp create mode 100644 practical_exercises/10_day_practice/day3/static_member1.cpp create mode 100644 practical_exercises/10_day_practice/day3/static_member2.cpp create mode 100644 practical_exercises/10_day_practice/day3/swap.cpp delete mode 100644 "practical_exercises/10_day_practice/day3/\344\270\244\346\225\260\344\272\244\346\215\242.cpp" delete mode 100644 "practical_exercises/10_day_practice/day3/\345\206\205\350\201\224\345\207\275\346\225\260.cpp" delete mode 100644 "practical_exercises/10_day_practice/day3/\345\207\275\346\225\260\347\273\274\345\220\210\347\273\203\344\271\240\351\242\230.cpp" delete mode 100644 "practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2601.cpp" delete mode 100644 "practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\210\220\345\221\230\345\207\275\346\225\2602.cpp" delete mode 100644 "practical_exercises/10_day_practice/day3/\351\235\231\346\200\201\346\225\260\346\215\256\346\210\220\345\221\230.cpp" create mode 100644 practical_exercises/10_day_practice/day4/clock/BUILD create mode 100644 practical_exercises/10_day_practice/day4/clock/operator.cpp create mode 100644 practical_exercises/10_day_practice/day4/clock/operator_plus.cpp create mode 100644 practical_exercises/10_day_practice/day4/const/BUILD create mode 100644 practical_exercises/10_day_practice/day4/const/obj_func.cpp create mode 100644 practical_exercises/10_day_practice/day4/const/obj_ref.cpp rename "practical_exercises/10_day_practice/day4/const\347\224\250\346\263\225/readme.md" => practical_exercises/10_day_practice/day4/const/readme.md (100%) delete mode 100644 "practical_exercises/10_day_practice/day4/const\347\224\250\346\263\225/\345\270\270\345\257\271\350\261\241\344\270\216\345\270\270\345\274\225\347\224\250.cpp" delete mode 100644 "practical_exercises/10_day_practice/day4/const\347\224\250\346\263\225/\345\270\270\345\257\271\350\261\241\344\270\216\346\231\256\351\200\232\345\207\275\346\225\260.cpp" create mode 100644 practical_exercises/10_day_practice/day4/copy_ctor/BUILD create mode 100644 practical_exercises/10_day_practice/day4/copy_ctor/clock.cpp create mode 100644 practical_exercises/10_day_practice/day4/copy_ctor/clock.h create mode 100644 practical_exercises/10_day_practice/day4/friend/BUILD rename "practical_exercises/10_day_practice/day4/\345\217\213\345\205\203\345\207\275\346\225\260/\345\217\213\345\205\203\347\261\273.cpp" => practical_exercises/10_day_practice/day4/friend/class.cpp (60%) create mode 100644 practical_exercises/10_day_practice/day4/friend/func.cpp rename "practical_exercises/10_day_practice/day4/\345\217\213\345\205\203\345\207\275\346\225\260/readme.md" => practical_exercises/10_day_practice/day4/friend/readme.md (100%) delete mode 100644 "practical_exercises/10_day_practice/day4/\345\217\213\345\205\203\345\207\275\346\225\260/\345\217\213\345\205\203\346\250\241\345\235\227.cpp" delete mode 100644 "practical_exercises/10_day_practice/day4/\346\213\267\350\264\235\346\236\204\351\200\240\345\207\275\346\225\260/clock.cpp" delete mode 100644 "practical_exercises/10_day_practice/day4/\346\213\267\350\264\235\346\236\204\351\200\240\345\207\275\346\225\260/clock.h" delete mode 100644 "practical_exercises/10_day_practice/day4/\346\227\266\351\222\237\347\273\203\344\271\240\351\242\230/\351\207\215\350\275\275()\347\232\204\346\227\266\351\222\237.cpp" delete mode 100644 "practical_exercises/10_day_practice/day4/\346\227\266\351\222\237\347\273\203\344\271\240\351\242\230/\351\207\215\350\275\275++\347\232\204\346\227\266\351\222\237.cpp" create mode 100644 practical_exercises/10_day_practice/day5/ctor_dtor/BUILD create mode 100644 practical_exercises/10_day_practice/day5/ctor_dtor/cseq.cpp create mode 100644 practical_exercises/10_day_practice/day5/ctor_dtor/ctor.cpp create mode 100644 practical_exercises/10_day_practice/day5/ctor_dtor/ctor_d.cpp create mode 100644 practical_exercises/10_day_practice/day5/ctor_dtor/noctor.cpp create mode 100644 practical_exercises/10_day_practice/day5/ctor_dtor/param.cpp rename "practical_exercises/10_day_practice/day5/\346\236\204\351\200\240\345\207\275\346\225\260\344\270\216\346\236\220\346\236\204\345\207\275\346\225\260/readme.md" => practical_exercises/10_day_practice/day5/ctor_dtor/readme.md (100%) create mode 100644 practical_exercises/10_day_practice/day5/ctor_dtor/seq.cpp create mode 100644 practical_exercises/10_day_practice/day5/inherit_access/BUILD create mode 100644 practical_exercises/10_day_practice/day5/inherit_access/private.cpp create mode 100644 practical_exercises/10_day_practice/day5/inherit_access/protected.cpp rename "practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/\344\277\235\346\212\244\347\273\247\346\211\277.cpp" => practical_exercises/10_day_practice/day5/inherit_access/protected_inherit.cpp (59%) create mode 100644 practical_exercises/10_day_practice/day5/inherit_access/public.cpp rename "practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/readme.md" => practical_exercises/10_day_practice/day5/inherit_access/readme.md (100%) create mode 100644 practical_exercises/10_day_practice/day5/rela/BUILD rename "practical_exercises/10_day_practice/day5/\345\237\272\347\261\273\344\270\216\346\264\276\347\224\237\347\261\273\345\205\263\347\263\273/readme.md" => practical_exercises/10_day_practice/day5/rela/readme.md (100%) create mode 100644 practical_exercises/10_day_practice/day5/rela/rela.cpp create mode 100644 practical_exercises/10_day_practice/day5/rule/BUILD create mode 100644 practical_exercises/10_day_practice/day5/rule/direct.cpp rename "practical_exercises/10_day_practice/day5/\350\260\203\347\224\250\350\247\204\345\210\231/readme.md" => practical_exercises/10_day_practice/day5/rule/readme.md (100%) create mode 100644 practical_exercises/10_day_practice/day5/virtual/BUILD create mode 100644 practical_exercises/10_day_practice/day5/virtual/example1.cpp create mode 100644 practical_exercises/10_day_practice/day5/virtual/example2.cpp create mode 100644 practical_exercises/10_day_practice/day5/virtual/init.cpp rename "practical_exercises/10_day_practice/day5/\350\231\232\346\213\237\347\273\247\346\211\277/readme.md" => practical_exercises/10_day_practice/day5/virtual/readme.md (100%) create mode 100644 practical_exercises/10_day_practice/day5/virtual/seq.cpp delete mode 100644 "practical_exercises/10_day_practice/day5/\345\237\272\347\261\273\344\270\216\346\264\276\347\224\237\347\261\273\345\205\263\347\263\273/\345\237\272\347\261\273\344\270\216\346\264\276\347\224\237\347\261\273(\351\207\215\350\246\201).cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\346\236\204\351\200\240\345\207\275\346\225\260\344\270\216\346\236\220\346\236\204\345\207\275\346\225\260/\346\236\204\351\200\240\345\207\275\346\225\260\350\260\203\347\224\250\346\254\241\345\272\217.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\346\236\204\351\200\240\345\207\275\346\225\260\344\270\216\346\236\220\346\236\204\345\207\275\346\225\260/\346\236\204\351\200\240\351\241\272\345\272\217.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\346\236\204\351\200\240\345\207\275\346\225\260\344\270\216\346\236\220\346\236\204\345\207\275\346\225\260/\346\262\241\346\234\211\346\236\204\351\200\240\345\207\275\346\225\260\347\232\204\346\264\276\347\224\237\347\261\273.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\346\236\204\351\200\240\345\207\275\346\225\260\344\270\216\346\236\220\346\236\204\345\207\275\346\225\260/\346\264\276\347\224\237\347\261\273\346\236\204\351\200\240\345\207\275\346\225\260.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\346\236\204\351\200\240\345\207\275\346\225\260\344\270\216\346\236\220\346\236\204\345\207\275\346\225\260/\346\264\276\347\224\237\347\261\273\346\236\204\351\200\240\345\207\275\346\225\260\350\260\203\347\224\250\351\241\272\345\272\217.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\346\236\204\351\200\240\345\207\275\346\225\260\344\270\216\346\236\220\346\236\204\345\207\275\346\225\260/\346\264\276\347\224\237\347\261\273\347\273\231\345\237\272\347\261\273\344\274\240\351\200\222\345\217\202\346\225\260.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/\344\277\235\346\212\244\346\210\220\345\221\230.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/\345\205\254\346\234\211\347\273\247\346\211\277.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\347\273\247\346\211\277\350\256\277\351\227\256\346\235\203\351\231\220/\347\247\201\346\234\211\347\273\247\346\211\277.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\350\231\232\346\213\237\347\273\247\346\211\277/\344\276\2131.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\350\231\232\346\213\237\347\273\247\346\211\277/\344\276\2132.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\350\231\232\346\213\237\347\273\247\346\211\277/\346\264\276\347\224\237\347\261\273\345\210\235\345\247\213\345\214\226.cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\350\231\232\346\213\237\347\273\247\346\211\277/\350\231\232\345\237\272\347\261\273\350\260\203\347\224\250\346\254\241\345\272\217(\351\207\215\350\246\201).cpp" delete mode 100644 "practical_exercises/10_day_practice/day5/\350\260\203\347\224\250\350\247\204\345\210\231/\347\233\264\346\216\245\345\237\272\347\261\273\344\270\216\351\227\264\346\216\245\345\237\272\347\261\273.cpp" create mode 100644 practical_exercises/10_day_practice/day6/abstract_class/BUILD create mode 100644 practical_exercises/10_day_practice/day6/abstract_class/main.cpp create mode 100644 practical_exercises/10_day_practice/day6/virtual_func/BUILD create mode 100644 practical_exercises/10_day_practice/day6/virtual_func/example.cpp create mode 100644 practical_exercises/10_day_practice/day6/virtual_func/virtual.cpp create mode 100644 practical_exercises/10_day_practice/day6/virtual_func/virtual_dtor.cpp create mode 100644 practical_exercises/10_day_practice/day6/virtual_func/virtual_feature.cpp create mode 100644 practical_exercises/10_day_practice/day6/virtual_func/vis.cpp delete mode 100644 "practical_exercises/10_day_practice/day6/\347\272\257\350\231\232\345\207\275\346\225\260\345\222\214\346\212\275\350\261\241\347\261\273/\346\212\275\350\261\241\347\261\273.cpp" delete mode 100644 "practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\344\273\216\345\237\272\347\261\273\347\273\247\346\211\277\347\232\204\346\210\220\345\221\230\345\260\206\350\256\277\351\227\256\345\210\260\346\264\276\347\224\237\347\261\273\347\211\210\346\234\254.cpp" delete mode 100644 "practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\347\274\226\347\250\213\345\256\236\344\276\213.cpp" delete mode 100644 "practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\344\276\213\345\255\220.cpp" delete mode 100644 "practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\345\207\275\346\225\260\347\211\271\346\200\247.cpp" delete mode 100644 "practical_exercises/10_day_practice/day6/\350\231\232\345\207\275\346\225\260/\350\231\232\346\236\220\346\236\204\345\207\275\346\225\260.cpp" delete mode 100644 "practical_exercises/10_day_practice/day7/()\350\277\220\347\256\227\347\254\246/\351\207\215\350\275\275()\347\232\204\346\227\266\351\222\237.cpp" delete mode 100644 "practical_exercises/10_day_practice/day7/=\345\217\267\350\277\220\347\256\227\347\254\246/=\344\276\213\351\242\230.cpp" delete mode 100644 "practical_exercises/10_day_practice/day7/[]\344\270\216()\344\276\213\351\242\230/example1.cpp" delete mode 100644 "practical_exercises/10_day_practice/day7/[]\350\277\220\347\256\227\347\254\246/[]\344\276\213\351\242\230(\351\207\215\347\202\271).cpp" create mode 100644 practical_exercises/10_day_practice/day7/binary_operator/BUILD create mode 100644 practical_exercises/10_day_practice/day7/binary_operator/friend_operator.cpp create mode 100644 practical_exercises/10_day_practice/day7/binary_operator/operator.cpp create mode 100644 practical_exercises/10_day_practice/day7/brackets/BUILD create mode 100644 practical_exercises/10_day_practice/day7/brackets/brac.cpp create mode 100644 practical_exercises/10_day_practice/day7/equal_operator/BUILD create mode 100644 practical_exercises/10_day_practice/day7/equal_operator/equal_operator.cpp create mode 100644 practical_exercises/10_day_practice/day7/example/BUILD create mode 100644 practical_exercises/10_day_practice/day7/example/example.cpp create mode 100644 practical_exercises/10_day_practice/day7/index_parentheses/BUILD create mode 100644 practical_exercises/10_day_practice/day7/index_parentheses/example.cpp create mode 100644 practical_exercises/10_day_practice/day7/subscript_operator/BUILD create mode 100644 practical_exercises/10_day_practice/day7/subscript_operator/subscript_operator.cpp create mode 100644 practical_exercises/10_day_practice/day7/unary_operator/BUILD create mode 100644 practical_exercises/10_day_practice/day7/unary_operator/time_counter.cpp create mode 100644 practical_exercises/10_day_practice/day7/unary_operator/time_increase.cpp delete mode 100644 "practical_exercises/10_day_practice/day7/\344\270\200\345\205\203\350\277\220\347\256\227\347\254\246/\347\247\222\351\222\237\350\207\252\345\242\236\350\277\220\347\256\227.cpp" delete mode 100644 "practical_exercises/10_day_practice/day7/\344\270\200\345\205\203\350\277\220\347\256\227\347\254\246/\350\256\241\346\225\260\345\231\250\345\211\215\345\220\216\350\207\252\345\242\236.cpp" delete mode 100644 "practical_exercises/10_day_practice/day7/\344\272\214\345\205\203\350\277\220\347\256\227\347\254\246/1.\347\261\273\350\277\220\347\256\227\347\254\246\351\207\215\350\275\275.cpp" delete mode 100644 "practical_exercises/10_day_practice/day7/\344\272\214\345\205\203\350\277\220\347\256\227\347\254\246/2.\345\217\213\345\205\203\350\277\220\347\256\227\347\254\246\345\256\236\347\216\260.cpp" delete mode 100644 "practical_exercises/10_day_practice/day7/\347\273\274\345\220\210\344\276\213\351\242\230/\351\207\215\350\246\201.cpp" delete mode 100644 practical_exercises/10_day_practice/day8/STL/map_se.cpp create mode 100644 practical_exercises/10_day_practice/day8/class_template/BUILD create mode 100644 practical_exercises/10_day_practice/day8/class_template/spec.cpp create mode 100644 practical_exercises/10_day_practice/day8/class_template/stack.cpp create mode 100644 practical_exercises/10_day_practice/day8/func/BUILD rename "practical_exercises/10_day_practice/day8/\345\207\275\346\225\260\346\250\241\346\235\277/\351\207\215\350\246\201.cpp" => practical_exercises/10_day_practice/day8/func/main.cpp (61%) create mode 100644 practical_exercises/10_day_practice/day8/func/max.cpp create mode 100644 practical_exercises/10_day_practice/day8/func/max_spec.cpp create mode 100644 practical_exercises/10_day_practice/day8/func/sort.cpp create mode 100644 practical_exercises/10_day_practice/day8/stl/BUILD create mode 100644 practical_exercises/10_day_practice/day8/stl/map.cpp delete mode 100644 "practical_exercises/10_day_practice/day8/\345\207\275\346\225\260\346\250\241\346\235\277/\344\276\2131.cpp" delete mode 100644 "practical_exercises/10_day_practice/day8/\345\207\275\346\225\260\346\250\241\346\235\277/\346\250\241\346\235\277\347\211\271\345\214\226.cpp" delete mode 100644 "practical_exercises/10_day_practice/day8/\345\207\275\346\225\260\346\250\241\346\235\277/\346\261\202\346\234\200\345\244\247\345\200\274.cpp" delete mode 100644 "practical_exercises/10_day_practice/day8/\347\261\273\346\250\241\346\235\277/\346\250\241\346\213\237\346\240\210.cpp" delete mode 100644 "practical_exercises/10_day_practice/day8/\347\261\273\346\250\241\346\235\277/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226.cpp" create mode 100644 practical_exercises/10_day_practice/day9/exception/1.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/10.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/2.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/3.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/4.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/5.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/6.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/7-1.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/7.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/8.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/9-2.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/9.cpp create mode 100644 practical_exercises/10_day_practice/day9/exception/BUILD delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/1.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/10.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/2.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/3.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/4.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/5.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/6.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/7-1.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/7.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/8.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/9-2.cpp" delete mode 100644 "practical_exercises/10_day_practice/day9/\345\274\202\345\270\270\344\276\213\345\255\220/9.cpp" delete mode 100644 practical_exercises/README.md~ create mode 100644 practical_exercises/key_exercises/BUILD create mode 100644 practical_exercises/key_exercises/array.cpp create mode 100644 practical_exercises/key_exercises/array_template.cpp create mode 100644 practical_exercises/key_exercises/bracket_overloading.cpp create mode 100644 practical_exercises/key_exercises/clock.cpp rename "practical_exercises/key_exercises/\345\207\275\346\225\260\346\250\241\346\235\277.cpp" => practical_exercises/key_exercises/func_temp.cpp (65%) create mode 100644 practical_exercises/key_exercises/io_operator.cpp create mode 100644 practical_exercises/key_exercises/io_operator_overload.cpp create mode 100644 practical_exercises/key_exercises/map_insert_look.cpp create mode 100644 practical_exercises/key_exercises/operator_cast.cpp create mode 100644 practical_exercises/key_exercises/operator_circle.cpp create mode 100644 practical_exercises/key_exercises/output.cpp create mode 100644 practical_exercises/key_exercises/override.cpp create mode 100644 practical_exercises/key_exercises/read_file.cpp create mode 100644 practical_exercises/key_exercises/stack.cpp create mode 100644 practical_exercises/key_exercises/try.cpp delete mode 100644 "practical_exercises/key_exercises/\344\270\255\346\213\254\345\217\267\351\207\215\350\275\275.cpp" delete mode 100644 "practical_exercises/key_exercises/\345\212\250\346\200\201\346\225\260\347\273\204.cpp" delete mode 100644 "practical_exercises/key_exercises/\345\255\227\345\205\270\346\217\222\345\205\245\344\270\216\346\237\245\346\211\276.cpp" delete mode 100644 "practical_exercises/key_exercises/\345\274\202\345\270\270\346\215\225\350\216\267.cpp" delete mode 100644 "practical_exercises/key_exercises/\346\227\266\351\222\237++\350\277\220\347\256\227\347\254\246\351\207\215\350\275\275.cpp" delete mode 100644 "practical_exercises/key_exercises/\347\261\273\346\250\241\346\235\277\344\271\213\346\240\210.cpp" delete mode 100644 "practical_exercises/key_exercises/\347\261\273\346\250\241\346\235\277\347\211\271\345\214\226\344\271\213\346\225\260\347\273\204.cpp" delete mode 100644 "practical_exercises/key_exercises/\347\273\247\346\211\277\344\270\216\345\260\201\350\243\205.cpp" delete mode 100644 "practical_exercises/key_exercises/\350\257\273\345\206\231\346\226\207\344\273\266\347\273\274\345\220\210\351\242\230.cpp" delete mode 100644 "practical_exercises/key_exercises/\350\276\223\345\205\245\350\276\223\345\207\272\350\277\220\347\256\227\347\254\246\351\207\215\350\275\275.cpp" delete mode 100644 "practical_exercises/key_exercises/\350\276\223\345\205\245\350\276\223\345\207\272\351\207\215\350\275\275.cpp" delete mode 100644 "practical_exercises/key_exercises/\350\276\223\345\207\272\346\240\274\345\274\217.cpp" delete mode 100644 "practical_exercises/key_exercises/\350\277\220\347\256\227\347\254\246\351\207\215\350\275\275\344\271\213\345\274\272\345\210\266\350\275\254\346\215\242.cpp" delete mode 100644 "practical_exercises/key_exercises/\351\207\215\350\275\275\345\234\206\346\213\254\345\217\267\347\232\204\346\227\266\351\222\237.cpp" create mode 100644 proj/README.md create mode 100644 tool/output/BUILD diff --git a/.gitignore b/.gitignore index 82c5d68e..97497e0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,7 @@ com.sh +bazel-CPlusPlusThings +bazel-bin +bazel-out +bazel-testlogs +bazel-cplusplus_bazel +.vscode \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..7f421c08 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,112 @@ +{ + "files.associations": { + "iostream": "cpp", + "ostream": "cpp", + "__availability": "cpp", + "__config": "cpp", + "__string": "cpp", + "deque": "cpp", + "filesystem": "cpp", + "functional": "cpp", + "iterator": "cpp", + "ratio": "cpp", + "__bit_reference": "cpp", + "__bits": "cpp", + "__debug": "cpp", + "__errc": "cpp", + "__functional_base": "cpp", + "__hash_table": "cpp", + "__locale": "cpp", + "__mutex_base": "cpp", + "__node_handle": "cpp", + "__nullptr": "cpp", + "__split_buffer": "cpp", + "__threading_support": "cpp", + "__tree": "cpp", + "__tuple": "cpp", + "algorithm": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "chrono": "cpp", + "cinttypes": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "complex": "cpp", + "condition_variable": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "exception": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "ios": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "limits": "cpp", + "list": "cpp", + "locale": "cpp", + "map": "cpp", + "memory": "cpp", + "mutex": "cpp", + "new": "cpp", + "numeric": "cpp", + "optional": "cpp", + "queue": "cpp", + "regex": "cpp", + "set": "cpp", + "sstream": "cpp", + "stack": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "string": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "typeinfo": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "utility": "cpp", + "vector": "cpp", + "any": "cpp", + "barrier": "cpp", + "*.tcc": "cpp", + "cfenv": "cpp", + "charconv": "cpp", + "codecvt": "cpp", + "compare": "cpp", + "concepts": "cpp", + "coroutine": "cpp", + "csetjmp": "cpp", + "csignal": "cpp", + "cuchar": "cpp", + "forward_list": "cpp", + "memory_resource": "cpp", + "random": "cpp", + "source_location": "cpp", + "future": "cpp", + "latch": "cpp", + "numbers": "cpp", + "ranges": "cpp", + "scoped_allocator": "cpp", + "semaphore": "cpp", + "shared_mutex": "cpp", + "span": "cpp", + "stop_token": "cpp", + "syncstream": "cpp", + "thread": "cpp", + "typeindex": "cpp", + "valarray": "cpp", + "variant": "cpp" + } +} \ No newline at end of file diff --git a/README.md b/README.md index 71dbbd21..7ffe6e78 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,61 @@ + +- [C++ 那些事](#c-那些事) + - [重磅项目](#重磅项目) + - [关于作者](#关于作者) + - [项目运行](#项目运行) + - [方式1: vscode + bazel](#方式1-vscode--bazel) + - [方式2: docker](#方式2-docker) + - [方式3: g++](#方式3-g) + - [视频学习本项目](#视频学习本项目) + - [飞书知识库](#飞书知识库) + - [基础进阶](#基础进阶) + - [实战系列](#实战系列) + - [10 日狂练](#10-日狂练) + - [重点实战练习](#重点实战练习) + - [C++2.0 新特性](#c20-新特性) + - [概况](#概况) + - [C++11 新特性](#c11-新特性) + - [C++14/17/20](#c141720) + - [设计模式](#设计模式) + - [STL 源码剖析](#stl-源码剖析) + - [并发编程](#并发编程) + - [C++ Concurrency in Action](#c-concurrency-in-action) + - [多线程与多进程](#多线程与多进程) + - [Threading In C++](#threading-in-c) + - [C++ 惯用法](#c-惯用法) + - [你最喜欢的 c++ 编程风格惯用法是什么?](#你最喜欢的-c-编程风格惯用法是什么) + - [学习课程](#学习课程) + - [极客时间《现代 C++ 实战 30 讲》](#极客时间现代-c-实战-30-讲) + - [工具篇](#工具篇) + - [容器快捷输出工具](#容器快捷输出工具) + - [像 Python 一样简单输出(Jupyter Notebook)](#像-python-一样简单输出jupyter-notebook) + - [观察编译过程变化](#观察编译过程变化) + - [C++ 的 Debug 工具 dbg-macro](#c-的-debug-工具-dbg-macro) + - [在 Linux 上的 Debug 工具 rr - 拥有回到过去的能力](#在-linux-上的-debug-工具-rr---拥有回到过去的能力) + - [拓展部分](#拓展部分) + - [一些问题](#一些问题) + - [贡献者](#贡献者) + # C++ 那些事 -[English version is here](./README_EN.md) +感谢各位对《C++ 那些事》的支持,现将内容也同步至B站,以视频的方式展示,可以打开网站直接阅读~欢迎大家 star、转发、PR。 -感谢各位对《C++ 那些事》的支持,现将内容也同步至网站,可以打开网站直接阅读~欢迎大家 star、转发、PR。 +在线个人博客:[光城的实验室](https://light-city.github.io/) -因服务器到期,暂时关闭以下站点,请大家阅读仓库即可,感谢支持。 +在线学习网站:[C++那些事](https://light-city.github.io/stories_things/) +- 中文名:**C++ 那些事** +- 英文名:**Stories About C Plus Plus** -> ~~[直通点](https://light-city.club/sc/)~~ +这是一个适合初学者从**入门到进阶**的仓库,解决了**面试者与学习者**想要**深入 C++** 及如何**入坑 C++** 的问题。除此之外,本仓库拓展了更加深入的源码分析,多线程并发等的知识,是一个比较全面的 C++ 学习从入门到进阶提升的仓库。 -## 规划 -将会使用bazel重构整个项目架构,方便编译~ +### 重磅项目 +推出一系列重磅项目,带大家实战学习C++,配合本开源项目学习,成长飞快! +直通点:[戳这里](./proj/README.md) ### 关于作者 @@ -22,42 +63,63 @@ 个人公众号:guangcity -![](img/wechat.jpg) - -欢迎大家反馈及 C++ 交流,本人在微信创建了 C++ 那些事交流群,优质的 C++ 资源交流区,期待大家关注上面公众号,点击公众号右下角->联系我,拉你入群。 +或者扫下面的二维码,欢迎大家反馈及 C++ 交流,本人在微信创建了 C++ 那些事交流群,优质的 C++ 资源交流区,期待大家关注上面公众号,点击公众号右下角->联系我,拉你入群。 --- +>关注我 -另外,下面是我自己建立的知识星球,会带大家做一些小项目以及源码解读等方面成长。 +如果觉得不错,关注我吧~ -![](https://www.hualigs.cn/image/60a24728bb736.jpg) + + + + + + + +
+
+ 星球 +
+
+ 微信公众号 +
### 项目运行 -- **代码环境** - Ubuntu 18.04 +#### 方式1: vscode + bazel -- **编辑工具** +#### 方式2: docker - CLion +新推出免开发环境,docker环境,大家可以pull下面镜像: -- **编译器** +``` +docker pull xingfranics/cplusplusthings:latest +``` +#### 方式3: g++ -> gcc/g++ -尽量用 g++,因为一开始我用的 vim 写的,所以纯 g++,后来用编译器 CLion,部分有 CMakeLists.txt 文件,直接导入就行,后面会更新这个文件包含整个项目,持续关注~ +### 视频学习本项目 -### 0.项目概要 +[第一期:Step By Step上手编译本项目](https://www.bilibili.com/video/BV1Rv4y1H7LB/?vd_source=bb6532dcd5b1d6b26125da900adb618e) -- 中文名:**C++ 那些事** -- 英文名:**Stories About C Plus Plus** +[第二期:免开发环境docker](https://www.bilibili.com/video/BV1oz4y1a7Pu/?vd_source=bb6532dcd5b1d6b26125da900adb618e) -这是一个适合初学者从**入门到进阶**的仓库,解决了**面试者与学习者**想要**深入 C++** 及如何**入坑 C++** 的问题。除此之外,本仓库拓展了更加深入的源码分析,多线程并发等的知识,是一个比较全面的 C++ 学习从入门到进阶提升的仓库。 +[第三期:手把手共读HashTable,彻底搞懂C++ STL](https://www.bilibili.com/video/BV1o8411U7vy/?vd_source=bb6532dcd5b1d6b26125da900adb618e) + +[第四期:手把手共读STL之enable_shared_from_this](https://www.bilibili.com/video/BV1du4y1w7Mg/?spm_id_from=333.788&vd_source=bb6532dcd5b1d6b26125da900adb618e) + +### 飞书知识库 + +[互联网大厂面试实录](https://hmpy6adnp5.feishu.cn/docx/OitBdRB4KozIhTxQt7Ec7iFDnkc) + +[拿下offer之必备面经](https://hmpy6adnp5.feishu.cn/docx/B1aCdVTUgoyJGYxtWV7cdvgRnxv) -### 1.基础进阶 + +### 基础进阶 - [`const` 那些事](./basic_content/const) - [`static` 那些事](./basic_content/static) @@ -85,85 +147,72 @@ - [引用与指针那些事](./basic_content/pointer_refer) - [宏那些事](./basic_content/macro) -### 2.实战系列 - -#### 2.1 [10 日狂练](./practical_exercises/10_day_practice) - -- [x] [day1](practical_exercises/10_day_practice/day1) +### 实战系列 -基本 c++ 语法 +#### [10 日狂练](./practical_exercises/10_day_practice) -- [x] [day2](practical_exercises/10_day_practice/day2) +- [day1-基本语法](practical_exercises/10_day_practice/day1) -递归、结构体、枚举、静态变量等 +- [day2-递归、结构体、枚举、静态变量等](practical_exercises/10_day_practice/day2) -- [x] [day3](practical_exercises/10_day_practice/day3) +- [day3-函数1](practical_exercises/10_day_practice/day3) -函数 +- [day4-函数2](practical_exercises/10_day_practice/day4) -- [x] [day4](practical_exercises/10_day_practice/day4) +- [day5-继承多态](practical_exercises/10_day_practice/day5) -函数深入 +- [day6-虚函数与抽象类](practical_exercises/10_day_practice/day6) -- [x] [day5](practical_exercises/10_day_practice/day5) +- [day7-运算符重载](practical_exercises/10_day_practice/day7) -继承多态 +- [day8-模版与STL](practical_exercises/10_day_practice/day8) -- [x] [day6](practical_exercises/10_day_practice/day6) +- [day9-异常](practical_exercises/10_day_practice/day9) -虚函数、抽象类 +- [day10-文件与流](practical_exercises/10_day_practice/day10) -- [x] [day7](practical_exercises/10_day_practice/day7) +#### [重点实战练习](./practical_exercises/key_exercises/) -运算符重载 +- [中括号重载.cpp](./practical_exercises/key_exercises/bracket_overloading.cpp) -- [x] [day8](practical_exercises/10_day_practice/day8) +- [时钟++运算符重载.cpp](./practical_exercises/key_exercises/clock.cpp) -模板与 STL +- [运算符重载之强制转换.cpp](./practical_exercises/key_exercises/operator_cast.cpp) -- [x] [day9](practical_exercises/10_day_practice/day9) +- [重载圆括号的时钟.cpp](./practical_exercises/key_exercises/operator_circle.cpp) -异常 +- [函数模板.cpp](./practical_exercises/key_exercises/func_temp.cpp) -- [x] [day10](practical_exercises/10_day_practice/day10) +- [动态数组.cpp](./practical_exercises/key_exercises/array.cpp) -文件与流 +- [字典插入与查找.cpp](./practical_exercises/key_exercises/map_insert_look.cpp) -#### 2.2 [重点实战练习](./practical_exercises/key_exercises/) +- [异常捕获.cpp](./practical_exercises/key_exercises/try.cpp) -├── [中括号重载.cpp](./practical_exercises/key_exercises/中括号重载.cpp) -├── [时钟++运算符重载.cpp](./practical_exercises/key_exercises/时钟++运算符重载.cpp) -├── [运算符重载之强制转换.cpp](./practical_exercises/key_exercises/运算符重载之强制转换.cpp) -└── [重载圆括号的时钟.cpp](./practical_exercises/key_exercises/重载圆括号的时钟.cpp) +- [类模板之栈.cpp](./practical_exercises/key_exercises/stack.cpp) -├── [函数模板.cpp](./practical_exercises/key_exercises/函数模板.cpp) +- [类模板特化之数组.cpp](./practical_exercises/key_exercises/array_template.cpp) -├── [动态数组.cpp](./practical_exercises/key_exercises/动态数组.cpp) +- [继承与封装.cpp](./practical_exercises/key_exercises/override.cpp) -├── [字典插入与查找.cpp](./practical_exercises/key_exercises/字典插入与查找.cpp) +- [读写文件综合题.cpp](./practical_exercises/key_exercises/read_file.cpp) -├── [异常捕获.cpp](./practical_exercises/key_exercises/异常捕获.cpp) +- [输入输出运算符重载.cpp](./practical_exercises/key_exercises/io_operator_overload.cpp) -├── [类模板之栈.cpp](./practical_exercises/key_exercises/类模板之栈.cpp) +- [输入输出重载.cpp](./practical_exercises/key_exercises/io_operator.cpp) -├── [类模板特化之数组.cpp](./practical_exercises/key_exercises/类模板特化之数组.cpp) +- [输出格式.cpp](./practical_exercises/key_exercises/output.cpp) -├── [继承与封装.cpp](./practical_exercises/key_exercises/继承与封装.cpp) -├── [读写文件综合题.cpp](./practical_exercises/key_exercises/读写文件综合题.cpp) -├── [输入输出运算符重载.cpp](./practical_exercises/key_exercises/输入输出运算符重载.cpp) -├── [输入输出重载.cpp](./practical_exercises/key_exercises/输入输出重载.cpp) -├── [输出格式.cpp](./practical_exercises/key_exercises/输出格式.cpp) +### [C++2.0 新特性](./cpp2.0) -### 3.[C++2.0 新特性](./c++2.0) - -#### 3.0 概况 +#### 概况 C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。 -#### 3.1 [C++11 新特性](./c++2.0/c++11) +#### [C++11 新特性](./cpp2.0/cpp11) -- [Variadic Templates](./c++2.0/c++11/variadic) +- [Variadic Templates](./cpp2.0/cpp11/variadic) - Spaces in Template Expressions @@ -172,17 +221,17 @@ C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。 vector> // before c++ 11 error error: ‘>>’ should be ‘> >’ within a nested template argument list,c++11后可以正常通过 ``` -- [nullptr and nullptr_t](./c++2.0/c++11/nullptr.cpp) +- [nullptr and nullptr_t](./cpp2.0/cpp11/nullptr.cpp) -- [Automatic Type Deduction with auto](./c++2.0/c++11/auto.cpp) +- [Automatic Type Deduction with auto](./cpp2.0/cpp11/auto.cpp) -- [Uniform Initialization ](./c++2.0/c++11/uniform_initialization.cpp) +- [Uniform Initialization ](./cpp2.0/cpp11/uniform_initialization.cpp) -- [initializer_list](./c++2.0/c++11/initializer.cpp) +- [initializer_list](./cpp2.0/cpp11/initializer.cpp) -- [explicit for ctors taking more than one argument](./c++2.0/c++11/explicit.cpp) +- [explicit for ctors taking more than one argument](./cpp2.0/cpp11/explicit.cpp) -- [range-based for statement](./c++2.0/c++11/auto.cpp) +- [range-based for statement](./cpp2.0/cpp11/auto.cpp) ```cpp for(decl:col) { @@ -190,33 +239,33 @@ C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。 } ``` -- [=default,=delete](./c++2.0/c++11/default_delete.cpp) +- [=default,=delete](./cpp2.0/cpp11/default_delete.cpp) 如果你自行定义了一个 `ctor`, 那么编译器就不会给你一个 `default ctor` 如果强制加上 `=default`, 就可以重新获得并使用 `default ctor`. - Alias(化名) Template (template typedef) - - [alias.cpp](./c++2.0/c++11/alias.cpp) - - [template_template.cpp](./c++2.0/c++11/template_template.cpp) + - [alias.cpp](./cpp2.0/cpp11/alias.cpp) + - [template_template.cpp](./cpp2.0/cpp11/template_template.cpp) -- [template template parameter](./c++2.0/template_template.cpp) +- [template template parameter](./cpp2.0/template_template.cpp) -- [type alias](./c++2.0/c++11/type_alias.cpp) +- [type alias](./cpp2.0/cpp11/type_alias.cpp) -- [noexcept](./c++2.0/c++11/noexcept.cpp) +- [noexcept](./cpp2.0/cpp11/noexcept.cpp) -- [override](./c++2.0/c++11/override.cpp) +- [override](./cpp2.0/cpp11/override.cpp) -- [final](./c++2.0/c++11/final.cpp) +- [final](./cpp2.0/cpp11/final.cpp) -- [decltype](./c++2.0/c++11/decltype.cpp) +- [decltype](./cpp2.0/cpp11/decltype.cpp) -- [lambda](./c++2.0/c++11/lambda.cpp) +- [lambda](./cpp2.0/cpp11/lambda.cpp) -- [Rvalue reference](./c++2.0/c++11/rvalue.cpp) +- [Rvalue reference](./cpp2.0/cpp11/rvalue.cpp) -- [move aware class](./c++2.0/c++11/move.cpp) +- [move aware class](./cpp2.0/cpp11/move.cpp) - 容器-结构与分类 @@ -224,22 +273,22 @@ C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。 - (2) 关联式容器包括:`set/multiset`,`map/multimap` - (3) 无序容器(C++2.0 新引入,更换原先 `hash_xxx` 为 `unordered_xxx`)包括:`unordered_map/unordered_multimap,unordered_set/unordered_multiset` -- [Hash Function](./c++2.0/c++11/hash.cpp) +- [Hash Function](./cpp2.0/cpp11/hash.cpp) -- [tuple](./c++2.0/c++11/tuple.cpp) +- [tuple](./cpp2.0/cpp11/tuple.cpp) 学习资料:https://www.bilibili.com/video/av51863195?from=search&seid=3610634846288253061 -#### 3.2 C++14/17/20 +#### C++14/17/20 待更新... -### 4.设计模式 +### 设计模式 - [单例模式](./design_pattern/singleton) - [生产消费者模式](./design_pattern/producer_consumer) -### 5. [STL 源码剖析](./src_analysis/stl) +### [STL 源码剖析](./src_analysis/stl) **STL 源码剖析:gcc 4.9.1** @@ -259,18 +308,18 @@ C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。 - [myhashtable](./src_analysis/stl/myhashtable.md) - [unordered_map](./src_analysis/stl/unordered_map.md) -### 6. [并发编程](./concurrency) +### [并发编程](./concurrency) -#### 6.1 C++ Concurrency in Action +#### C++ Concurrency in Action - [第一章](./concurrency/concurrency_v1/chapter1) - [第二章](./concurrency/concurrency_v1/chapter2) 学习资料:https://downdemo.gitbook.io/cpp-concurrency-in-action-2ed/ -#### 6.2 多线程与多进程 +#### 多线程与多进程 -##### 6.2.1 Threading In C++ +##### Threading In C++ - [介绍](./concurrency/Threading_In_CPlusPlus/1.thread) - [创建线程的五种类型](./concurrency/Threading_In_CPlusPlus/2.create_type) @@ -281,7 +330,7 @@ C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。 > > https://www.youtube.com/watch?v=eZ8yKZo-PGw&list=PLk6CEY9XxSIAeK-EAh3hB4fgNvYkYmghp&index=4 -### 7. [C++ 惯用法](./codingStyleIdioms) +### [C++ 惯用法](./codingStyleIdioms) ##### 你最喜欢的 c++ 编程风格惯用法是什么? @@ -291,39 +340,39 @@ C++2.0 是一个简称,意为「现代 C++」,包括 C++11/14/17/20。 - [4.copy and swap](./codingStyleIdioms/4_copy-swap) - [5.pImpl (指针指向具体实现)](./codingStyleIdioms/5_pImpl) -### 8.学习课程 +### 学习课程 -#### 8.1 [极客时间《现代 C++ 实战 30 讲》](https://time.geekbang.org/channel/home) +#### [极客时间《现代 C++ 实战 30 讲》](https://time.geekbang.org/channel/home) -- [堆、栈、RAII:C++ 里该如何管理资源?](./learn_class/modern_C++_30/RAII) +- [堆、栈、RAII:C++ 里该如何管理资源?](./learn_class/modern_cpp_30/RAII) - [堆](./learn_class/modern_++_30/RAII/heap.cpp) - - [栈](./learn_class/modern_C++_30/RAII/stack.cpp) - - [RAII](./learn_class/modern_C++_30/RAII/RAII.cpp) -- [自己动手,实现 C++ 的智能指针](./learn_class/modern_C++_30/smart_ptr) - - [auto_ptr、scope_ptr](./learn_class/modern_C++_30/smart_ptr/auto_scope.cpp) - - [unique_ptr](./learn_class/modern_C++_30/smart_ptr/unique_ptr.cpp) - - [shared_ptr](./learn_class/modern_C++_30/smart_ptr/shared_ptr.cpp) -- [右值和移动究竟解决了什么问题?](./learn_class/modern_C++_30/reference) - - [左值与右值](./learn_class/modern_C++_30/reference/reference.cpp) - - [延长声明周期](./learn_class/modern_C++_30/reference/lifetime.cpp) - - [引用折叠](./learn_class/modern_C++_30/reference/collapses.cpp) - - [完美转发](./learn_class/modern_C++_30/reference/forward.cpp) - - [不要返回本地变量的引用](./learn_class/modern_C++_30/reference/don'treturnReference.cpp) -- [容器 1](./learn_class/modern_C++_30/container1) -- [容器 2](./learn_class/modern_C++_30/container2) -- [异常](./learn_class/modern_C++_30/exception) -- [字面量、静态断言和成员函数说明符](./learn_class/modern_C++_30/literalAssert) -- [是不是应该返回对象?](./learn_class/modern_C++_30/returnObj) -- [编译期多态:泛型编程和模板入门](./learn_class/modern_C++_30/compilerpoly) -- [译期能做些什么?一个完整的计算世界](./learn_class/modern_C++_30/compilercompute) -- [SFINAE:不是错误的替换失败是怎么回事?](./learn_class/modern_C++_30/SFINAE) -- [constexpr:一个常态的世界](./learn_class/modern_C++_30/constexpr) -- [函数对象和 lambda:进入函数式编程](./learn_class/modern_C++_30/functionLambda) -- [内存模型和 atomic:理解并发的复杂性](./learn_class/modern_C++_30/memorymodel_atomic) - -### 9.工具篇 - -#### 9.1 [容器快捷输出工具](./tool/output) + - [栈](./learn_class/modern_cpp_30/RAII/stack.cpp) + - [RAII](./learn_class/modern_cpp_30/RAII/RAII.cpp) +- [自己动手,实现 C++ 的智能指针](./learn_class/modern_cpp_30/smart_ptr) + - [auto_ptr、scope_ptr](./learn_class/modern_cpp_30/smart_ptr/auto_scope.cpp) + - [unique_ptr](./learn_class/modern_cpp_30/smart_ptr/unique_ptr.cpp) + - [shared_ptr](./learn_class/modern_cpp_30/smart_ptr/shared_ptr.cpp) +- [右值和移动究竟解决了什么问题?](./learn_class/modern_cpp_30/reference) + - [左值与右值](./learn_class/modern_cpp_30/reference/reference.cpp) + - [延长声明周期](./learn_class/modern_cpp_30/reference/lifetime.cpp) + - [引用折叠](./learn_class/modern_cpp_30/reference/collapses.cpp) + - [完美转发](./learn_class/modern_cpp_30/reference/forward.cpp) + - [不要返回本地变量的引用](./learn_class/modern_cpp_30/reference/don'treturnReference.cpp) +- [容器 1](./learn_class/modern_cpp_30/container1) +- [容器 2](./learn_class/modern_cpp_30/container2) +- [异常](./learn_class/modern_cpp_30/exception) +- [字面量、静态断言和成员函数说明符](./learn_class/modern_cpp_30/literalAssert) +- [是不是应该返回对象?](./learn_class/modern_cpp_30/returnObj) +- [编译期多态:泛型编程和模板入门](./learn_class/modern_cpp_30/compilerpoly) +- [译期能做些什么?一个完整的计算世界](./learn_class/modern_cpp_30/compilercompute) +- [SFINAE:不是错误的替换失败是怎么回事?](./learn_class/modern_cpp_30/SFINAE) +- [constexpr:一个常态的世界](./learn_class/modern_cpp_30/constexpr) +- [函数对象和 lambda:进入函数式编程](./learn_class/modern_cpp_30/functionLambda) +- [内存模型和 atomic:理解并发的复杂性](./learn_class/modern_cpp_30/memorymodel_atomic) + +### 工具篇 + +#### [容器快捷输出工具](./tool/output) 对吴老师的代码进行了修改,[点击此处直通代码](./tool/output/output_container.h) @@ -343,28 +392,28 @@ map mp{ { 1 => 1, 2 => 4, 3 => 9 } ``` -#### 9.2 像 Python 一样简单输出(Jupyter Notebook) +#### 像 Python 一样简单输出(Jupyter Notebook) - [像 Python 一样玩 C/C++](./tool/像Python一样玩CC++.md) -#### 9.3 观察编译过程变化 +#### 观察编译过程变化 - [https://cppinsights.io](https://cppinsights.io/) -#### 9.4 C++ 的 Debug 工具 dbg-macro +#### C++ 的 Debug 工具 dbg-macro - [C++ 的 Debug 工具 dbg-macro](./tool/C++的Debug工具dbg-macro.md) -#### 9.5 在 Linux 上的 Debug 工具 rr - 拥有回到过去的能力 +#### 在 Linux 上的 Debug 工具 rr - 拥有回到过去的能力 - [用 rr 来进行 debug](./tool/用rr来进行debug.md) -### 10.拓展部分 +### 拓展部分 -#### 10.1 一些问题 +#### 一些问题 - [C++ 中如何将 string 类型转换为 int 类型?](./extension/some_problem/string_int.md) -### 11.贡献者 +### 贡献者 @@ -376,22 +425,5 @@ map mp{ -### 12.赞助我 - -如果觉得不错,赞助我吧~ - - - - - - - -
-
- 支付宝 -
-
- 微信 -
diff --git a/README_EN.md b/README_EN.md index a43f6ed7..77f6bc94 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,7 +1,7 @@ # Stories About C Plus Plus Thanks for all the support about << Stories About C ++ >>~~, right now you could open this link(https://light-city.club/sc/) to read this article.~~ -Any star, retweet or pr will be weclomed. +Any star, retweet or pr will be welcomed. **Notice: The website is not available now.** @@ -54,7 +54,7 @@ other details,such as in-depth source code analysis and multi-threaded concurren Basic Grammar About C ++ - [x] day2 -Recursive、Structor、Enumerate、Static Variable +Recursive、Struct、Enumerate、Static Variable - [x] day3 @@ -70,7 +70,7 @@ Inheritance and Polymorphism - [x] day6 -Vitrual Function、Abstruct +Virtual Function、Abstruct - [x] day7 @@ -232,7 +232,7 @@ Learning materials: https://chenxiaowei.gitbook.io/cpp_concurrency_in_action/ - [Introduction](./concurrency/Threading_In_CPlusPlus/1.thread) - [Five Types of Thread Creation](./concurrency/Threading_In_CPlusPlus/2.create_type) -- [Join And Detachs](./concurrency/Threading_In_CPlusPlus/3.join_detach) +- [Join And Detaches](./concurrency/Threading_In_CPlusPlus/3.join_detach) - [mutex in C++ Threading](./concurrency/Threading_In_CPlusPlus/4.mutex) > From: @@ -253,31 +253,31 @@ Learning materials: https://chenxiaowei.gitbook.io/cpp_concurrency_in_action/ #### 6.1 [Chinese Name:极客时间《现代 C++ 实战 30 讲》](https://time.geekbang.org/channel/home) -- [heap、stack、RAII:How to manage resources for C ++ ?](./learn_class/modern_C++_30/RAII) +- [heap、stack、RAII:How to manage resources for C ++ ?](./learn_class/modern_cpp_30/RAII) - [heap](./modern_++_30/RAII/heap.cpp) - - [stack](./learn_class/modern_C++_30/RAII/stack.cpp) - - [RAII](./learn_class/modern_C++_30/RAII/RAII.cpp) -- [Implementing smart pointers for C ++](./learn_class/modern_C++_30/smart_ptr) - - [auto_ptr、scope_ptr](./learn_class/modern_C++_30/smart_ptr/auto_scope.cpp) - - [unique_ptr](./learn_class/modern_C++_30/smart_ptr/unique_ptr.cpp) - - [shared_ptr](./learn_class/modern_C++_30/smart_ptr/shared_ptr.cpp) -- [What exactly does r value and move solve?](./learn_class/modern_C++_30/reference) - - [L value and R value](./learn_class/modern_C++_30/reference/reference.cpp) - - [Extend the declaration cycle](./learn_class/modern_C++_30/reference/lifetime.cpp) - - [Reference folding](./learn_class/modern_C++_30/reference/collapses.cpp) - - [Perfect forward](./learn_class/modern_C++_30/reference/forward.cpp) - - [Do not return Reference](./learn_class/modern_C++_30/reference/don'treturnReference.cpp) -- [Container 1](./learn_class/modern_C++_30/container1) -- [Container 2](./learn_class/modern_C++_30/container2) -- [Exception](./learn_class/modern_C++_30/exception) -- [Literal、Static Assertion And Member Function Specifier](./learn_class/modern_C++_30/literalAssert) -- [Return Object?](./learn_class/modern_C++_30/returnObj)c -- [Getting started with generic programming and templates](./learn_class/modern_C++_30/compilerpoly) -- [A whole Compiler Compute World](./learn_class/modern_C++_30/compilercompute) -- [SFINAE:What is it if it is not replace error?](./learn_class/modern_C++_30/SFINAE) -- [constexpr:A Normal World](./learn_class/modern_C++_30/constexpr) -- [Function object and Lambda:functionLambda](./learn_class/modern_C++_30/functionLambda) -- [Memory Model and Atomic:Understangding the complexity of concurrency](./learn_class/modern_C++_30/memorymodel_atomic) + - [stack](./learn_class/modern_cpp_30/RAII/stack.cpp) + - [RAII](./learn_class/modern_cpp_30/RAII/RAII.cpp) +- [Implementing smart pointers for C ++](./learn_class/modern_cpp_30/smart_ptr) + - [auto_ptr、scope_ptr](./learn_class/modern_cpp_30/smart_ptr/auto_scope.cpp) + - [unique_ptr](./learn_class/modern_cpp_30/smart_ptr/unique_ptr.cpp) + - [shared_ptr](./learn_class/modern_cpp_30/smart_ptr/shared_ptr.cpp) +- [What exactly does r value and move solve?](./learn_class/modern_cpp_30/reference) + - [L value and R value](./learn_class/modern_cpp_30/reference/reference.cpp) + - [Extend the declaration cycle](./learn_class/modern_cpp_30/reference/lifetime.cpp) + - [Reference folding](./learn_class/modern_cpp_30/reference/collapses.cpp) + - [Perfect forward](./learn_class/modern_cpp_30/reference/forward.cpp) + - [Do not return Reference](./learn_class/modern_cpp_30/reference/don'treturnReference.cpp) +- [Container 1](./learn_class/modern_cpp_30/container1) +- [Container 2](./learn_class/modern_cpp_30/container2) +- [Exception](./learn_class/modern_cpp_30/exception) +- [Literal、Static Assertion And Member Function Specifier](./learn_class/modern_cpp_30/literalAssert) +- [Return Object?](./learn_class/modern_cpp_30/returnObj)c +- [Getting started with generic programming and templates](./learn_class/modern_cpp_30/compilerpoly) +- [A whole Compiler Compute World](./learn_class/modern_cpp_30/compilercompute) +- [SFINAE:What is it if it is not replace error?](./learn_class/modern_cpp_30/SFINAE) +- [constexpr:A Normal World](./learn_class/modern_cpp_30/constexpr) +- [Function object and Lambda:functionLambda](./learn_class/modern_cpp_30/functionLambda) +- [Memory Model and Atomic:Understanding the complexity of concurrency](./learn_class/modern_cpp_30/memorymodel_atomic) ### 7.Tools diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 00000000..e69de29b diff --git a/basic_content/abstract/BUILD b/basic_content/abstract/BUILD new file mode 100644 index 00000000..11411032 --- /dev/null +++ b/basic_content/abstract/BUILD @@ -0,0 +1,43 @@ +# you can run some main program, just replace binary name +# such as: `bazel run basic_content/abstract:interesting_facts1` +# `bazel run basic_content/abstract:interesting_facts2` +# etc... +load("@rules_cc//cc:defs.bzl", "cc_binary") + +# Don't panic if you get compilation errors, this is what this code demonstrates, as expected. +cc_binary( + name = "interesting_facts1", + srcs = ["interesting_facts1.cpp"], +) + +cc_binary( + name = "interesting_facts2", + srcs = ["interesting_facts2.cpp"], +) + +# Don't panic if you get compilation errors, this is what this code demonstrates, as expected. +cc_binary( + name = "interesting_facts3", + srcs = ["interesting_facts3.cpp"], +) + +cc_binary( + name = "interesting_facts4", + srcs = ["interesting_facts4.cpp"], +) + +cc_binary( + name = "interesting_facts5", + srcs = ["interesting_facts5.cpp"], +) + +# Don't panic if you get compilation errors, this is what this code demonstrates, as expected. +cc_binary( + name = "pure_virtual", + srcs = ["pure_virtual.cpp"], +) + +cc_binary( + name = "derived_full", + srcs = ["derived_full.cpp"], +) \ No newline at end of file diff --git a/basic_content/abstract/README.md b/basic_content/abstract/README.md index e11aa358..15f3ae64 100644 --- a/basic_content/abstract/README.md +++ b/basic_content/abstract/README.md @@ -23,7 +23,7 @@ public: 抽象类只能作为基类来派生新类使用,不能创建抽象类的对象,抽象类的指针和引用->由抽象类派生出来的类的对象! -> 代码样例:[test.cpp](./test.cpp)、[pure_virtual.cpp](./pure_virtual.cpp) +> 代码样例:[abstract_base.h](./abstract_base.h)、[pure_virtual.cpp](./pure_virtual.cpp) ## 2.实现抽象类 diff --git a/basic_content/abstract/abstract.cpp b/basic_content/abstract/abstract.cpp index 3a26d992..a7db6188 100644 --- a/basic_content/abstract/abstract.cpp +++ b/basic_content/abstract/abstract.cpp @@ -1,27 +1,28 @@ /** * @file abstract.cpp - * @brief 抽象类中:在成员函数内可以调用纯虚函数,在构造函数/析构函数内部不能使用纯虚函数 + * @brief + * 抽象类中:在成员函数内可以调用纯虚函数,在构造函数/析构函数内部不能使用纯虚函数 * 如果一个类从抽象类派生而来,它必须实现了基类中的所有纯虚函数,才能成为非抽象类 * @author 光城 * @version v1 * @date 2019-07-20 */ -#include +#include using namespace std; class A { public: - virtual void f() = 0; // 纯虚函数 - void g(){ this->f(); } - A(){} + virtual void f() = 0; // 纯虚函数 + void g() { this->f(); } + A() {} }; -class B:public A{ +class B : public A { public: - void f(){ cout<<"B:f()"< -using namespace std; +#include +using namespace std; -class Base -{ - int x; - public: - virtual void fun() = 0; - int getX() { return x; } -}; +class Base { + int x; -class Derived: public Base -{ - int y; - public: - void fun() { cout << "fun() called"; } // 实现了fun()函数 -}; +public: + virtual void fun() = 0; + int getX() { return x; } +}; -int main(void) -{ - Derived d; - d.fun(); - return 0; -} +class Derived : public Base { +public: + void fun() { cout << "fun() called"; } // 实现了fun()函数 +}; + +int main(void) { + Derived d; + d.fun(); + return 0; +} diff --git a/basic_content/abstract/interesting_facts1.cpp b/basic_content/abstract/interesting_facts1.cpp index 048ede79..e36a9312 100644 --- a/basic_content/abstract/interesting_facts1.cpp +++ b/basic_content/abstract/interesting_facts1.cpp @@ -6,23 +6,21 @@ * @date 2019-07-20 */ -#include -using namespace std; +#include +using namespace std; /** * @brief 抽象类至少包含一个纯虚函数 */ -class Test -{ - int x; -public: - virtual void show() = 0; - int getX() { return x; } -}; +class Test { + int x; -int main(void) -{ - Test t; //error! 不能创建抽象类的对象 - return 0; -} +public: + virtual void show() = 0; + int getX() { return x; } +}; +int main(void) { + Test t; // error! 不能创建抽象类的对象 + return 0; +} diff --git a/basic_content/abstract/interesting_facts2.cpp b/basic_content/abstract/interesting_facts2.cpp index 84d293e7..c9e002fd 100644 --- a/basic_content/abstract/interesting_facts2.cpp +++ b/basic_content/abstract/interesting_facts2.cpp @@ -6,33 +6,28 @@ * @date 2019-07-20 */ -#include -using namespace std; - +#include +using namespace std; /** * @brief 抽象类至少包含一个纯虚函数 */ -class Base -{ - int x; -public: - virtual void show() = 0; - int getX() { return x; } - -}; -class Derived: public Base -{ -public: - void show() { cout << "In Derived \n"; } - Derived(){} -}; -int main(void) -{ - //Base b; //error! 不能创建抽象类的对象 - //Base *b = new Base(); error! - Base *bp = new Derived(); // 抽象类的指针和引用 -> 由抽象类派生出来的类的对象 - bp->show(); - return 0; -} +class Base { + int x; +public: + virtual void show() = 0; + int getX() { return x; } +}; +class Derived : public Base { +public: + void show() { cout << "In Derived \n"; } + Derived() {} +}; +int main(void) { + // Base b; //error! 不能创建抽象类的对象 + // Base *b = new Base(); error! + Base *bp = new Derived(); // 抽象类的指针和引用 -> 由抽象类派生出来的类的对象 + bp->show(); + return 0; +} diff --git a/basic_content/abstract/interesting_facts3.cpp b/basic_content/abstract/interesting_facts3.cpp index fb768242..dcb56f25 100644 --- a/basic_content/abstract/interesting_facts3.cpp +++ b/basic_content/abstract/interesting_facts3.cpp @@ -6,24 +6,23 @@ * @date 2019-07-20 */ -#include -using namespace std; +#include +using namespace std; -class Base -{ - int x; -public: - virtual void show() = 0; - int getX() { return x; } -}; -class Derived: public Base -{ -public: -// void show() { } -}; -int main(void) -{ - Derived d; //error! 派生类没有实现纯虚函数,那么派生类也会变为抽象类,不能创建抽象类的对象 - return 0; -} +class Base { + int x; +public: + virtual void show() = 0; + int getX() { return x; } +}; +class Derived : public Base { +public: + // void show() { } +}; +int main(void) { + Derived + d; // error! + // 派生类没有实现纯虚函数,那么派生类也会变为抽象类,不能创建抽象类的对象 + return 0; +} diff --git a/basic_content/abstract/interesting_facts4.cpp b/basic_content/abstract/interesting_facts4.cpp index 028554be..155e4233 100644 --- a/basic_content/abstract/interesting_facts4.cpp +++ b/basic_content/abstract/interesting_facts4.cpp @@ -6,30 +6,29 @@ * @date 2019-07-20 */ -#include -using namespace std; +#include +using namespace std; -// An abstract class with constructor -class Base -{ - protected: - int x; - public: - virtual void fun() = 0; - Base(int i) { x = i; } -}; +// An abstract class with constructor +class Base { +protected: + int x; -class Derived: public Base -{ - int y; - public: - Derived(int i, int j):Base(i) { y = j; } - void fun() { cout << "x = " << x << ", y = " << y; } -}; +public: + virtual void fun() = 0; + Base(int i) { x = i; } +}; -int main(void) -{ - Derived d(4, 5); - d.fun(); - return 0; -} +class Derived : public Base { + int y; + +public: + Derived(int i, int j) : Base(i) { y = j; } + void fun() { cout << "x = " << x << ", y = " << y; } +}; + +int main(void) { + Derived d(4, 5); + d.fun(); + return 0; +} diff --git a/basic_content/abstract/interesting_facts5.cpp b/basic_content/abstract/interesting_facts5.cpp index e9152b90..20669985 100644 --- a/basic_content/abstract/interesting_facts5.cpp +++ b/basic_content/abstract/interesting_facts5.cpp @@ -7,24 +7,23 @@ * @version v1 * @date 2019-07-20 */ -#include +#include using namespace std; -class Base { - public: - Base() { cout << "Constructor: Base" << endl; } - virtual ~Base() { cout << "Destructor : Base" << endl; } +class Base { +public: + Base() { cout << "Constructor: Base" << endl; } + virtual ~Base() { cout << "Destructor : Base" << endl; } }; -class Derived: public Base { - public: - Derived() { cout << "Constructor: Derived" << endl; } - ~Derived() { cout << "Destructor : Derived" << endl; } +class Derived : public Base { +public: + Derived() { cout << "Constructor: Derived" << endl; } + ~Derived() { cout << "Destructor : Derived" << endl; } }; -int main() { - Base *Var = new Derived(); - delete Var; - return 0; +int main() { + Base *Var = new Derived(); + delete Var; + return 0; } - diff --git a/basic_content/abstract/pure_virtual.cpp b/basic_content/abstract/pure_virtual.cpp index bfaf1777..2bba32f3 100644 --- a/basic_content/abstract/pure_virtual.cpp +++ b/basic_content/abstract/pure_virtual.cpp @@ -2,33 +2,31 @@ * @file pure_virtual.cpp * @brief 纯虚函数:没有函数体的虚函数 * 抽象类:包含纯虚函数的类 - * + * * @author 光城 * @version v1 * @date 2019-07-20 */ -#include +#include using namespace std; -class A -{ +class A { private: - int a; + int a; + public: - virtual void show()=0; // 纯虚函数 + virtual void show() = 0; // 纯虚函数 }; +int main() { + /* + * 1. 抽象类只能作为基类来派生新类使用 + * 2. 抽象类的指针和引用->由抽象类派生出来的类的对象! + */ + A a; // error 抽象类,不能创建对象 -int main() -{ - /* - * 1. 抽象类只能作为基类来派生新类使用 - * 2. 抽象类的指针和引用->由抽象类派生出来的类的对象! - */ - A a; // error 抽象类,不能创建对象 - - A *a1; // ok 可以定义抽象类的指针 + A *a1; // ok 可以定义抽象类的指针 - A *a2 = new A(); // error, A是抽象类,不能创建对象 + A *a2 = new A(); // error, A是抽象类,不能创建对象 } diff --git a/basic_content/abstract/test.cpp b/basic_content/abstract/test.cpp deleted file mode 100644 index 7797c909..00000000 --- a/basic_content/abstract/test.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @file test.cpp - * @brief C++中的纯虚函数(或抽象函数)是我们没有实现的虚函数!我们只需声明它!通过声明中赋值0来声明纯虚函数! - * 纯虚函数:没有函数体的虚函数 - * @author 光城 - * @version v1 - * @date 2019-07-20 - */ - - - -/** - * @brief 抽象类 - */ -class Test -{ - // Data members of class -public: - // Pure Virtual Function - virtual void show() = 0; - - /* Other members */ -}; diff --git a/basic_content/assert/BUILD b/basic_content/assert/BUILD new file mode 100644 index 00000000..d0279517 --- /dev/null +++ b/basic_content/assert/BUILD @@ -0,0 +1,13 @@ +# you can run some main program, just replace binary name +# such as: `bazel run basic_content/assert:ignore_assert` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "ignore_assert", + srcs = ["ignore_assert.c"], +) + +cc_binary( + name = "assert", + srcs = ["assert.c"], +) diff --git a/basic_content/assert/assert.c b/basic_content/assert/assert.c index f66a2c04..71b24adb 100644 --- a/basic_content/assert/assert.c +++ b/basic_content/assert/assert.c @@ -6,7 +6,8 @@ int main() int x = 7; /* Some big code in between and let's say x - * is accidentally changed to 9 */ + * is accidentally changed to 9 + */ x = 9; // Programmer assumes x to be 7 in rest of the code diff --git a/basic_content/assert/ignore_assert.c b/basic_content/assert/ignore_assert.c index 0a5a15e1..d7f941e4 100644 --- a/basic_content/assert/ignore_assert.c +++ b/basic_content/assert/ignore_assert.c @@ -11,7 +11,6 @@ #include int main(){ - int x=7; assert(x==5); return 0; } diff --git a/basic_content/bit/BUILD b/basic_content/bit/BUILD new file mode 100644 index 00000000..cbd6d03d --- /dev/null +++ b/basic_content/bit/BUILD @@ -0,0 +1,7 @@ +# please run `bazel run basic_content/bit:bit` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "bit", + srcs = ["bit.cpp"], +) \ No newline at end of file diff --git a/basic_content/bit/README.md b/basic_content/bit/README.md index 69fd9ffe..c5b40d6a 100644 --- a/basic_content/bit/README.md +++ b/basic_content/bit/README.md @@ -108,7 +108,7 @@ struct stuff 这里 stuff.field1 与 stuff.field2 之间有一个 2 Bits 的空隙,stuff.field3 则存储在下一个 unsigned int 中,该结构现在大小为 3 * 32 = 96 Bits。 -学习代码见:[learn.cpp](learn.cpp) +学习代码见:[bit.cpp](bit.cpp) ## 位域的初始化和位的重映射 diff --git a/basic_content/bit/bit.cpp b/basic_content/bit/bit.cpp new file mode 100644 index 00000000..70cf7d3a --- /dev/null +++ b/basic_content/bit/bit.cpp @@ -0,0 +1,18 @@ +#include + +using namespace std; +struct stuff { + unsigned int field1 : 30; + unsigned int : 2; + unsigned int field2 : 4; + unsigned int : 0; + unsigned int field3 : 3; +}; +int main() { + struct stuff s = {1, 3, 5}; + cout << s.field1 << endl; + cout << s.field2 << endl; + cout << s.field3 << endl; + cout << sizeof(s) << endl; + return 0; +} diff --git a/basic_content/bit/learn.cpp b/basic_content/bit/learn.cpp deleted file mode 100644 index 505256bc..00000000 --- a/basic_content/bit/learn.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include - -using namespace std; -struct stuff -{ - unsigned int field1: 30; - unsigned int : 2; - unsigned int field2: 4; - unsigned int : 0; - unsigned int field3: 3; -}; -int main(){ - struct stuff s={1,3,5}; - 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 diff --git a/basic_content/c_poly/c++_examp.cpp b/basic_content/c_poly/c++_examp.cpp index 3cb6bc69..d0d3f6dd 100644 --- a/basic_content/c_poly/c++_examp.cpp +++ b/basic_content/c_poly/c++_examp.cpp @@ -9,34 +9,31 @@ #include using namespace std; -class A -{ - public: - virtual void f()//虚函数实现 - { - cout << "Base A::f() " << endl; - } +class A { +public: + virtual void f() //虚函数实现 + { + cout << "Base A::f() " << endl; + } }; -class B:public A // 必须为共有继承,否则后面调用不到,class默认为私有继承! +class B : public A // 必须为共有继承,否则后面调用不到,class默认为私有继承! { - public: - virtual void f()//虚函数实现,子类中virtual关键字可以没有 - { - cout << "Derived B::f() " << endl; - } +public: + virtual void f() //虚函数实现,子类中virtual关键字可以没有 + { + cout << "Derived B::f() " << endl; + } }; +int main() { + A a; //基类对象 + B b; //派生类对象 -int main() -{ - A a;//基类对象 - B b;//派生类对象 - - A* pa = &a;//父类指针指向父类对象 - pa->f();//调用父类的函数 + A *pa = &a; //父类指针指向父类对象 + pa->f(); //调用父类的函数 - pa = &b; //父类指针指向子类对象,多态实现 - pa->f();//调用派生类同名函数 - return 0; + pa = &b; //父类指针指向子类对象,多态实现 + pa->f(); //调用派生类同名函数 + return 0; } diff --git a/basic_content/c_poly/c_examp b/basic_content/c_poly/c_examp deleted file mode 100755 index 458fb2a5db728b32f9b99b15c7b598fb0f65583a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8720 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 diff --git a/basic_content/const/BUILD b/basic_content/const/BUILD new file mode 100644 index 00000000..3c294fce --- /dev/null +++ b/basic_content/const/BUILD @@ -0,0 +1,17 @@ +# please run `bazel run basic_content/const:const_function` +# please run `bazel run basic_content/const:const_num` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +# Don't panic if you get compilation errors, this is what this code demonstrates, as expected. +cc_binary( + name = "const_function", + srcs = ["const_function.cpp"], + copts = ["-std=c++11"] +) + +# Don't panic if you get compilation errors, this is what this code demonstrates, as expected. +cc_binary( + name = "const_num", + srcs = ["const_num.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/const/README.md b/basic_content/const/README.md index 24153a79..cf1367dc 100644 --- a/basic_content/const/README.md +++ b/basic_content/const/README.md @@ -19,7 +19,7 @@ const int a=100; + 类型检查 + const常量与`#define`宏定义常量的区别: - > ~~**const常量具有类型,编译器可以进行安全检查;#define宏定义没有数据类型,只是简单的字符串替换,不能进行安全检查。**~~感谢两位大佬指出这里问题,见:[issue](https://github.com/Light-City/CPlusPlusThings/issues/5) + > const常量具有类型,编译器可以进行安全检查;#define宏定义没有数据类型,只是简单的字符串替换,不能进行安全检查。感谢两位大佬指出这里问题,见:[issue](https://github.com/Light-City/CPlusPlusThings/issues/5) + const常量支持所有类型。 + 其他情况下它只是一个 `const` 限定的变量,不要将与常量混淆。 @@ -28,7 +28,7 @@ const int a=100; ```cpp void f(const int i){ - i++; //error! + i++; // error! } ``` @@ -58,9 +58,9 @@ int main(){ > const常量在不同文件的访问 ```cpp -//extern_file1.cpp +// extern_file1.cpp extern const int ext=12; -//extern_file2.cpp +// extern_file2.cpp #include extern const int ext; int main(){ @@ -88,22 +88,34 @@ const int i,j=0 // error: uninitialized const ‘i’ 与指针相关的const有四种: ```c++ -const char * a; //指向const对象的指针或者说指向常量的指针。 -char const * a; //同上 -char * const a; //指向类型对象的const指针。或者说常指针、const指针。 -const char * const a; //指向const对象的const指针。 +const char * a; // 指向const对象的指针或者说指向常量的指针。 +char const * a; // 同上 +char * const a; // 指向类型对象的const指针。或者说常指针、const指针。 +const char * const a; // 指向const对象的const指针。 ``` > **小结:**
> 如果*const*位于`*`的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于`*`的右侧,*const*就是修饰指针本身,即指针本身是常量。 +**另一种解读方式**
+利用英文从右边往左边读,并且以to为分界,to之前为描述指针的特性,to之后为描述目标的特性
+```c++ +const char * p; //p is a pointer to const char +char const * p; //同上 +char * const p; //p is a const pointer to char +const char * const p; //p is a const pointer to const char +``` +当指针被加上const特性,则指针不可改变指向的地址
+当指向的目标特性为char,则内容可以透过指针被修改,如: *char='y';
+当指向的目标特性为const char,则内容不可透过指针修改
+ 具体使用如下: (1) **指向常量的指针** ```cpp const int *ptr; -*ptr = 10; //error +*ptr = 10; // error ``` ptr是一个指向int类型const对象的指针,const定义的是int类型,也就是ptr所指向的对象类型,而不是ptr本身,所以ptr可以不用赋初始值。但是不能通过ptr去修改所指对象的值。 @@ -113,7 +125,7 @@ ptr是一个指向int类型const对象的指针,const定义的是int类型, ```c++ const int p = 10; const void * vp = &p; -void *vp = &p; //error +void *vp = &p; // error ``` 另外一个重点是:**允许把非const对象的地址赋给指向const对象的指针**。 @@ -123,7 +135,7 @@ void *vp = &p; //error ```c++ const int *ptr; int val = 3; -ptr = &val; //ok +ptr = &val; // ok ``` 我们不能通过ptr指针来修改val的值,即使它指向的是非const对象! @@ -140,22 +152,33 @@ cout<<*ptr< using namespace std; int main(){ + int num=0, num1=1; + int * const ptr=# // const指针必须初始化!且const指针的指向不能修改 + ptr = &num1; // error! const指针不能修改指向! + cout<<*ptr< +using namespace std; +int main(){ + int num=0, num1=1; + int * const ptr=# // const指针必须初始化!且const指针的指向不能修改 + *ptr = 1; cout<<*ptr< int `*`错误! @@ -164,7 +187,7 @@ int main(){ using namespace std; int main(){ const int num=0; - int * const ptr=# //error! const int* -> int* + int * const ptr=# // error! const int* -> int* cout<<*ptr< -#include"apple.cpp" -using namespace std; - -Apple::Apple(int i):apple_number(i) +// apple.cpp +Apple::Apple(int i) : apple_number(i) { - } -int Apple::add(){ - take(1); +int Apple::add(int num) +{ + take(num); return 0; } -int Apple::add(int num) const{ +int Apple::add(int num) const +{ take(num); - return num; + return 0; } void Apple::take(int num) const { - cout<<"take func "< 编译: g++ -o main main.cpp apple.cpp
+> 编译:bazel run basic_content/const/class_const/first_example:main
此时报错,上面getCount()方法中调用了一个add方法,而add方法并非const修饰,所以运行报错。也就是说const成员函数只能访问const成员函数。 diff --git a/basic_content/const/class_const/c++11_example/BUILD b/basic_content/const/class_const/c++11_example/BUILD new file mode 100644 index 00000000..e5096a64 --- /dev/null +++ b/basic_content/const/class_const/c++11_example/BUILD @@ -0,0 +1,16 @@ +# please run `bazel run basic_content/const/class_const/c++11_example:main` +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") + +cc_library( + name = "apple", + srcs = ["apple.cpp"], + hdrs = ["apple.h"], +) + +cc_binary( + name = "main", + srcs = ["main.cpp"], + deps = [ + ":apple", + ], +) \ No newline at end of file diff --git a/basic_content/const/class_const/c++11_example/apple.cpp b/basic_content/const/class_const/c++11_example/apple.cpp index e4988644..2f39fd6b 100644 --- a/basic_content/const/class_const/c++11_example/apple.cpp +++ b/basic_content/const/class_const/c++11_example/apple.cpp @@ -1,15 +1,19 @@ -class Apple -{ -private: - int people[100]; -public: - Apple(int i); - //使用c++11标准编译 - static const int apple_number=10; - //const int apple_number=10; - void take(int num) const; - int add(int num); - int add(int num) const; - int getCount() const; -}; +#include "apple.h" +#include +using namespace std; +Apple::Apple(int i) {} +int Apple::add(int num) { + take(num); + return 0; +} +int Apple::add(int num) const { + take(num); + return 0; +} +void Apple::take(int num) const { cout << "take func " << num << endl; } +int Apple::getCount() const { + take(1); + // add(); //error + return apple_number; +} \ No newline at end of file diff --git a/basic_content/const/class_const/c++11_example/apple.h b/basic_content/const/class_const/c++11_example/apple.h new file mode 100644 index 00000000..edd65ff1 --- /dev/null +++ b/basic_content/const/class_const/c++11_example/apple.h @@ -0,0 +1,13 @@ +#pragma once + +class Apple { +public: + Apple(int i); + // 使用c++11标准编译 + static const int apple_number = 10; + // const int apple_number=10; + void take(int num) const; + int add(int num); + int add(int num) const; + int getCount() const; +}; diff --git a/basic_content/const/class_const/c++11_example/main b/basic_content/const/class_const/c++11_example/main deleted file mode 100755 index 62017da688b455919b4730dc329a7da50fc82409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9656 zcmcIqe{hrK9eaSVeq)AF6Y0^vHAaKLM z3Y;0@nA>@rx81l+H{G4e+~%COD@8nzKX#|L;qdfs-6q;9I-HE_rqX@B&-;9nH*XW? zdE1xE`+dGYpYQX1e!TDVE#C~ZuCv>0g266s5kxs_eUfE7g&4a=l8V%ywUc9mV;1!KoD6RezQ8Qmf);tcEL=CllTE zb<2~nWywS;w|&|6hWcgob?$81y+V$g{FCnbjh(V5&Z7$y#XJW;N;S!c*Z%AqFE;$) zY~!2to1e+&{&oEiUauzEbo_YUup))cW<*VVn#OBCy*On_;7se>!_%8UmW3POV0IY^ zd2*HEFRZ}-J^1DP+*QGUYX$zw3jWVk@V}{o{+bH@_f+unu;O2s>_e*v2{dV3M=kto z;D45wFLpb_QrQVw0_Hud$D%jgL~~s)G;K>?I;CaxNJiH*q20PoYmaY9Wc7HaDH+LT z<5{7#gf?igct){98=8{oR6G>vPR0#cdCA=yJM@M`I;(X@vhli>R6=j|2DS+e{B$xK zXj|9bk?zm}V07qp@l-6?67A5v-e_+mqv@GQLeI8D1A%t%R>DIfs-?4fCLZZ)327mZ z7U-x)v=jSiGWzJyli8Nf=Pnw8vsGH#ZBZkXXga4CqD%I@MyU;^pQirqE8zsrj|Rf||xo6GC75Fpf04*rViQGsBP? zXQDb9B+cuD&SrH~O8z{xekOxbE+pS&;`13sf+Z$C`C{;x_~vu2!NjLCfx&0u^O;Pt zpou?~m4Vw#e0B6n>76D%ojVM{f%CP&12w;{b&244%A?)Q%2G`rAa)gHhnufc)0F0_SO zP7Sq9^NHZ8DazIs`oTktlGz0F)G zx=tAV@4opo#v^jGI$=1HLSS7dYn}tk_L1!AnA1UltrfYN_r3?ag0m0FVEmP?(VeiN zb}+wdET6j=JP;T=wfhhzgqFvlt`kx=aNeop2Rfxn{FT77MPNBjdq#3BhS`RQX+>(hUS|8{?V z+~4UBwH{nNsmg`Lc5s;kxT7V1sU?4=b?G^|myds1HF5*|2KT+MyS#7k`fSa=+nT@B z3=iXT-V6?$umxAYmwT5s`q#Vs_xQW~oBi5}L&Z)%!v2^3)KNg^uh1h~ESefqlTVPQt(u;N8Fu4EP9eEAS97 z?eAgWVc;d`mVmyq2y8psg>AdjwqW|?+C#RkF|6a?ZpGRy5xNCk?y8aeDi&MWy} z1o>Xb=bG)?4FApGHADUYX>_=t2mMAzt(><9;pZs)sHr4x|1%h_^+{j9n`+=8MRNz}T7nhRw*&#d z3mdQ>3HaR`!l_1Zm3-2DD=b?J6wTii^A%l-Fwi`4ZOaup2eEbfdXRw8wE7c}Mhn57KECih6vyv+A8+vgPTxlQ?p5&7)=6e*) zanm;z!4v}t?jKuLj%T>WCneaTlIDIdD0)!ImHGc2@jces(Ka=&`xSmf;h!q}oWds+ zeof)G6~3gf)$jVIrmwn|bav-bdd{`VUFY^JtItWwd%w5d?WuEny-N*&YlX*K@2U5! zw)(KrRl#dYOP4K=e zPEpFAEr!eLUr{(0O7-UmJ`YOya|M0IS)odNsZftG%c`(j`JPhB$8J>ny_A2I2$$s- z@4uz`e3})xbnH}%5AiWl3Up4|aQax|r}NQ{{QE5PLY|4g+roD%zV)1@_l*tr^h5YK zBH;77L$)X8b0_%Zf7s%Gzto>NFOP#?Zd^}GeW!@2`Q?63Oa6R8A8Q26r*oD1y??5Y z*r+lZPzwd(^LvQT>BZoe>zDkM<1dH6hDyfK89wFNKsQVN#Qc-AoSzoz0F@7}w-H5f zkMuKf{bZ#66%*F&fa3G}&+vk8Jn3iRx}Ay_k_&H5>pJ`q^k=iN2|p+K4nemw0)CG; z;Ab}S$@}_7DHY-*^j)fLMrSJUN0tA3ao;20`5Kb^iRZ(|k}p+D9xen{F8;L@_;)G3 zwH|dp_^uMq2JvVGKYs>)7OEJ0UR5jG4=VVnMc$lc@;?{+S@x?0T~Ez$E%D3L#~PGA z-B`>J0H5ZCuF(W>`4plPd?)-^{YRv}QZk`k%FiS3`c~bdV zr~F*63|>(Bbp14g9SNlPpHTWsm2e*Tls9YqSIYI^5Y{*sDnHj*`dzO0R9_%?N}-P+WywYGGGP=PEK8a2I7i&Ci(B}grn*0vq(>%S|pQ+?9k#VJ+njfWFmcWEtc!++W`|3r9o3K zQKd4TJKEnb3xloR)%}ThG=5(q8`q-g6snQAC{+qO^wtJVOQgvhWSv)|Dxi*vC2vw80x5o9nqddLTKw-H#PcOVUp|CS~OHNSNZ!fs-_izgosef2tZrc?%xp5 z0vnsDN-Gn_ZIs}(Ku{?Jo7)RMH?3RO5kR%n-`E-;qmuE(N*S^MEVSmkHu^WTG!^Tg zKA$XOs)D5|az?W`nOC^@@73eGH{NCpsgADE7*&O;ZP}iTx-`v$5~H37{gp41Yq5wPG0MgmRcJ#K&oPz7sTOT< zti`fvtrts)s_#b4nWn>7d|G!lTkus{tuAH>JEgG7ylOto6?sdCh51_P< za@?>bt~aG|qo6+z#3>)e2vw)Dpf23m9esMF8(7a6xR+ar6#in-FWjlL9(Vg2TbAjO zEsENb%DKC93H+%m5fg5rdL!9h;g0P{!JmQkj3L<;&t$PRO9&0JOgtGO1J&wJ>cTBk z?ncwSB@GgP2Edb!8z`maDBSU0b-?t-;Djl|)HrDj3vS;Vg&Mkv^d+K*A+3{pa402i z%&l z4<+CQWwz)0oUR-$D$%BIy;5ifc?oxJ?*FjeClwAW2H)drB)3?XP^8$1#x(rcp6`b* zD~7D-Lr!%H8hb5%1o(oKa66uOwH5679_dkmavj6aE`CQdy%`OvA#neE-yBo{e_1JV z{H(`#E96v@V4Clx!^)sd*;D+a!|^M&pnC*`%JzJJ^{B#3rTp>u_bU5Fu~)4Oor9?d3|&LJg&o*{<+>U zMuP&dzCjgf=Kmc6bNq$6i0UBBh6=MC<1vdp-&@1Vp5tUUY{&FvG>FIJ->vRT{mO8j z8b9m1xS? -#include"apple.cpp" +#include "apple.h" +#include using namespace std; -Apple::Apple(int i) -{ - -} -int Apple::add(int num){ - take(num); -} -int Apple::add(int num) const{ - take(num); -} -void Apple::take(int num) const -{ - cout<<"take func "< +Apple::Apple(int i) : apple_number(i) {} +int Apple::add(int num) { + take(num); + return 0; +} +int Apple::add(int num) const { + take(num); + return 0; +} +void Apple::take(int num) const { + std::cout << "take func " << num << std::endl; +} +int Apple::getCount() const { + take(1); + // add(); //error + return apple_number; +} \ No newline at end of file diff --git a/basic_content/const/class_const/first_example/apple.h b/basic_content/const/class_const/first_example/apple.h new file mode 100644 index 00000000..7222b025 --- /dev/null +++ b/basic_content/const/class_const/first_example/apple.h @@ -0,0 +1,11 @@ +#pragma once + +class Apple { +public: + Apple(int i); + const int apple_number; + void take(int num) const; + int add(int num); + int add(int num) const; + int getCount() const; +}; diff --git a/basic_content/const/class_const/first_example/main.cpp b/basic_content/const/class_const/first_example/main.cpp index 40056f2e..83742e73 100644 --- a/basic_content/const/class_const/first_example/main.cpp +++ b/basic_content/const/class_const/first_example/main.cpp @@ -1,32 +1,12 @@ -#include -#include"apple.cpp" +#include "apple.h" +#include using namespace std; -Apple::Apple(int i):apple_number(i) -{ - -} -int Apple::add(int num){ - take(num); -} -int Apple::add(int num) const{ - take(num); -} -void Apple::take(int num) const -{ - cout<<"take func "< +int Apple::apple_number = 10; + +Apple::Apple(int i) { apple_number = i; } +int Apple::add() { + take(1); + return 0; +} +int Apple::add(int num) const { + take(num); + return num; +} +void Apple::take(int num) const { + std::cout << "take func " << num << std::endl; +} +int Apple::getCount() const { + take(1); + add(); // error + return apple_number; +} \ No newline at end of file diff --git a/basic_content/const/class_const/overload_example/apple.h b/basic_content/const/class_const/overload_example/apple.h new file mode 100644 index 00000000..6957e810 --- /dev/null +++ b/basic_content/const/class_const/overload_example/apple.h @@ -0,0 +1,11 @@ +#pragma once + +class Apple { +public: + Apple(int i); + static int apple_number; + void take(int num) const; + int add(); + int add(int num) const; + int getCount() const; +}; diff --git a/basic_content/const/class_const/overload_example/main b/basic_content/const/class_const/overload_example/main deleted file mode 100755 index 562af2edb88d1ec9ad724c27b06e5ccc99cda293..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9656 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 -#include"apple.cpp" +#include "apple.h" +#include using namespace std; -const int Apple::apple_number=10; -#include -#include"apple.cpp" -using namespace std; - -Apple::Apple(int i):apple_number(i) -{ -} -int Apple::add(){ - take(1); - return 0; -} -int Apple::add(int num) const{ - take(num); - return num; -} -void Apple::take(int num) const -{ - cout<<"take func "< +const int Apple::apple_number = 10; +int Apple::ap = 666; +Apple::Apple(int i) {} +int Apple::add(int num) { + take(num); + return 0; +} +int Apple::add(int num) const { + take(num); + return 0; +} +void Apple::take(int num) const { + std::cout << "take func " << num << std::endl; +} +int Apple::getCount() const { + take(1); + // add(); //error + return apple_number; +} \ No newline at end of file diff --git a/basic_content/const/class_const/static_example/apple.h b/basic_content/const/class_const/static_example/apple.h new file mode 100644 index 00000000..7050d0ac --- /dev/null +++ b/basic_content/const/class_const/static_example/apple.h @@ -0,0 +1,11 @@ +#pragma once +class Apple { +public: + Apple(int i); + static int ap; // 在类实现文件中定义并初始化 + static const int apple_number; + void take(int num) const; + int add(int num); + int add(int num) const; + int getCount() const; +}; diff --git a/basic_content/const/class_const/static_example/main b/basic_content/const/class_const/static_example/main deleted file mode 100755 index 3c8391130c138e7355caaffcd713006144a2f252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9704 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 diff --git a/basic_content/const/class_const/static_example/main.cpp b/basic_content/const/class_const/static_example/main.cpp index 74ca4f0e..c2ecd1d4 100644 --- a/basic_content/const/class_const/static_example/main.cpp +++ b/basic_content/const/class_const/static_example/main.cpp @@ -1,34 +1,11 @@ -#include -#include"apple.cpp" -using namespace std; -const int Apple::apple_number=10; -int Apple::ap=666; -Apple::Apple(int i) -{ - -} -int Apple::add(int num){ - take(num); -} -int Apple::add(int num) const{ - take(num); -} -void Apple::take(int num) const -{ - cout<<"take func "< +int main() { + Apple a(2); + std::cout << a.getCount() << std::endl; + std::cout << a.ap << std::endl; + a.add(10); + const Apple b(3); + b.add(100); + return 0; } diff --git a/basic_content/const/const_function.cpp b/basic_content/const/const_function.cpp index d45c3bf3..66403a86 100644 --- a/basic_content/const/const_function.cpp +++ b/basic_content/const/const_function.cpp @@ -1,11 +1,9 @@ -#include +#include using namespace std; -void f(const int i){ - i=10; // error: assignment of read-only parameter ‘i’ - cout< +#include using namespace std; -int main(){ - const int b = 10; - b = 0; //error - const string s = "helloworld"; - const int i,j=0; +int main() { + const int b = 10; + b = 0; // error + const string s = "helloworld"; + const int i, j = 0; } diff --git a/basic_content/const/extern_const/BUILD b/basic_content/const/extern_const/BUILD new file mode 100644 index 00000000..ce887e83 --- /dev/null +++ b/basic_content/const/extern_const/BUILD @@ -0,0 +1,14 @@ +# please run `bazel run basic_content/const/extern_const:const_file1` and `# please run `bazel run basic_content/const/extern_const:file` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "const_file1", + srcs = ["const_file1.cpp", "const_file2.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "file", + srcs = ["file1.cpp", "file2.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/const/extern_const/const_file1.cpp b/basic_content/const/extern_const/const_file1.cpp index 7077ac9d..a4b7105a 100644 --- a/basic_content/const/extern_const/const_file1.cpp +++ b/basic_content/const/extern_const/const_file1.cpp @@ -1 +1 @@ -extern const int ext=12; +extern const int ext = 12; \ No newline at end of file diff --git a/basic_content/const/extern_const/const_file2.cpp b/basic_content/const/extern_const/const_file2.cpp index 53729f43..8bef46ff 100644 --- a/basic_content/const/extern_const/const_file2.cpp +++ b/basic_content/const/extern_const/const_file2.cpp @@ -1,11 +1,8 @@ -#include +#include /** * by 光城 * compile: g++ -o file const_file2.cpp const_file1.cpp * execute: ./file */ extern const int ext; -int main(){ - - std::cout< +#include /** * by 光城 * compile: g++ -o file file2.cpp file1.cpp * execute: ./file */ extern int ext; -int main(){ - - std::cout<<(ext+10)< +#include using namespace std; - -int main(){ - const int *ptr; - *ptr=10; //error +int main() { + const int *ptr; + *ptr = 10; // error } diff --git a/basic_content/const/funciton_const/condition1/condition2.cpp b/basic_content/const/funciton_const/condition1/condition2.cpp index 9db73393..12a7424b 100644 --- a/basic_content/const/funciton_const/condition1/condition2.cpp +++ b/basic_content/const/funciton_const/condition1/condition2.cpp @@ -1,9 +1,8 @@ -#include +#include using namespace std; - -int main(){ - const int p = 10; - const void *vp = &p; - void *vp = &p; //error +int main() { + const int p = 10; + const void *vp = &p; + void *vp = &p; // error } diff --git a/basic_content/const/funciton_const/condition1/condition3.cpp b/basic_content/const/funciton_const/condition1/condition3.cpp index 5809e5f4..a93da78e 100644 --- a/basic_content/const/funciton_const/condition1/condition3.cpp +++ b/basic_content/const/funciton_const/condition1/condition3.cpp @@ -1,12 +1,11 @@ -#include +#include using namespace std; -int main(){ - const int *ptr; - int val = 3; - ptr = &val; //ok - int *ptr1 = &val; - *ptr1=4; - cout<<*ptr<W)*@Dm zpx7$5h*dx;@e4`~ajV39QH5q+t?WGD75KHdEuh66lm+Ho9dm9WajLIKK~=PP=UPi- zE`(nKS`&12W5fzN`7B~AGPz7l1~|StNK~UY|5lxnuRmTAJ&dn*!N%V5jUi#V6Z6`}<@~JdS=y)W2H%XsAj5lDGM}!>70W zy61)8od3tRHQ#;m#pgdF9lc6^Z$kKl%Vo8i@OAjzeD%ZCJHoGZZk$@z2C*!?2XsRj z4Mp;o!MCn}{}y<;I5(q#B44W4GN#@3dLy`tWEvrDx4(#?*D8?>(w_Cx(rznaH#yquFdC zEA&Y3K0ThuD7bfDTQZ$W^hO7h2}@UAbMO8hv&Bef^}%R1(G*D;W_x4!sL+9@li6@r zM|V%UM-Kz&F`E*pcrp^}F&i6WBhid*W}=3fjl{y?ZeY6*!HDVUteHtfM);4`-ps7&W8Q5)=4;|8X0S8&j$&I;hZ8Q}?tbf+9yC8jpBF)bR{AvvYJ646* zh4(^OZj*tX!6WWc@5zM~LPgRMnYTQJEyyh*O24>%K;pDFsHH4re&4j0sx49Cb!r|| zK~f$e6`B6)~XcDrd z#&;w6R}O3W*R_c^7P@*P7iVVh1<)>@?UL-`$?Bk(8;0YDL+iKVWAH*61JS3|kAP_t zi(W1N=F!bBP$=qtP5(40mM+2gVHv;w9QArA!15W=_h}FPMFu!~&4U11enC4scaP?} zpuKX<+*pXVmZPoTD*De^^^e~b!T5+=O&=WRQfOHJh010?t`B5Q(>{DKwTXK~uJWC4 z!>IrV7mAn9sTzIx2S3i|7AGG3 z*p>U@Lk})4Euk+rO+Q(KaPMDTT6%E+fzOaQO*`k@RbZ2r_ZhOCrin85Q|dOli}w-w zYUp4nzZB{V^>&`#{&a;OgL}IE8StJ+{z@eOTIVg)(`xPPRnOc3MAII5*Yr33k>5vW z{_W2Em3Bl}s{NBTan7aP@lNh-n!xw#C|J zT~$89=}dMA@opspMdj^L5Awi&RchF`y9b!gW(fb z5H~|W$m=`lZo6)kdlWTW`Z!<>?Z4ZuKQ7hM|6$-m&~LQsyDUA${th(S0 zZuQnZ?g@MSrz={$J07dlybUK;Y2KEJs(s#I#@iC|HiW!8TD^YQ!M@d7Eyv|D+#f|8 z`+iCxKc!Dc;QwU=2JjsrYQ|@UD5zv9;6eKuk(1NegowZ0v#Wwq<}<{374Jrg(tT?{ zmNqMy&ncUfT#e5I5v_kBEOkkLyS9|3!jwBmtZ?V6tFUA~Q@rH1QfC~Yl)&x zak(d`GBNA)g#z|>B3{cgQY!9$w1*OX#$v*!`pfvG%AnM6yBn0cbz;2C`|t>FA-_{;=md~pP zV84N#ZTxYGV?L<$#ovP`P}qR+*0u+Ibcl^M^cDUSO_LDyD0{XoVqu3ye) z{ZiQvIP5O~r*Wq1HBmx7h4>wCAM#?(_^(TQWn^OqF>Yi(rPc+juB~9d1qTqC56(PY z960sYS+85Z7q6iEKT$?Lg_xD`%X}AN88d6!Oe`tN4R99kRTrufmGT|1VXKmdNVq#q~TO9Fqkv& z7Zf8d0wj$@vm+u9Kb}H7i<=osb2O33V%nDoI&_&tGD;4rG?p|)Kn_#@#lUbHBC^$Z z(kg{fS~fV47*XqTB#s~~S+3RswLG}|^%%@hO?1?Vp$%!1!ULh+2k=Hj09(ZWnDbKv3wW>x|?$Se4k0F2J`rH``M295%|+xmu0^9Oe%*i zRS~tHY`Faj7IaRfrm{cZk1i?ymBx?z|FH6JRRQ_F?o$ba8HH0g^5Oc~|8Zb6uFAY{ z-KmI!V38zKKJwA$DQNl^nVS$>uvsgudSw_Ag8@k z{xfW-iL{1^`2Oqrg#K^Aho&0)bAE^a|H38Je>EKo?csh+!Pj0t-=`O;Qy^!1S!Vto zZ0!Dpd$+3Kkc?7%upje9hdyv`wWB*0G^dIz(AF&wac9v#R|qY8~GM +#include using namespace std; -int main(){ - - int num=0; - int * const ptr=# //const指针必须初始化!且const指针的值不能修改 - int * t = # - *t = 1; - cout<<*ptr< +#include using namespace std; -int main(){ - - const int num=0; - int * const ptr=# //error! const int* -> int* - cout<<*ptr< int* + cout << *ptr << endl; } diff --git a/basic_content/const/funciton_const/condition2/condition3 b/basic_content/const/funciton_const/condition2/condition3 deleted file mode 100755 index d751dcbbf9e0c02cdb04d1a912758dc293a3dc78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9232 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 G|33i^HI)Pa diff --git a/basic_content/const/funciton_const/condition2/condition3.cpp b/basic_content/const/funciton_const/condition2/condition3.cpp index aed864ce..397d59e2 100644 --- a/basic_content/const/funciton_const/condition2/condition3.cpp +++ b/basic_content/const/funciton_const/condition2/condition3.cpp @@ -1,8 +1,7 @@ -#include +#include using namespace std; -int main(){ - - const int num=10; - const int * const ptr=# //error! const int* -> int* - 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 Ip>)>&Pq=@S(EtDd diff --git a/basic_content/const/funciton_const/condition3/condition1.cpp b/basic_content/const/funciton_const/condition3/condition1.cpp index b58bca7b..4b6fc5af 100644 --- a/basic_content/const/funciton_const/condition3/condition1.cpp +++ b/basic_content/const/funciton_const/condition3/condition1.cpp @@ -1,10 +1,8 @@ -#include +#include using namespace std; -int main(){ - - const int p = 3; - const int * const ptr = &p; - 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 #include using namespace std; @@ -14,47 +6,42 @@ using namespace std; */ template -auto multiply(T x, T y)->decltype(x*y) -{ - return x*y; +auto multiply(T x, T y) -> decltype(x * y) { + return x * y; } -int main() -{ - int nums[] = {1,2,3,4}; - vector vec(nums,nums+4); - vector::iterator it; - - for(it=vec.begin();it!=vec.end();it++) - cout<<*it<<" "; - cout< vec(nums, nums + 4); + vector::iterator it; - using nullptr_t = decltype(nullptr); - nullptr_t nu; - int * p =NULL; - if(p==nu) - cout<<"NULL"< -using namespace std; - -enum Color {RED,BLUE}; -enum Feeling {EXCITED,BLUE}; +enum Color +{ + RED, + BLUE +}; +enum Feeling +{ + EXCITED, + BLUE +}; -int main() +int main() { + Color a = BLUE; // error + Feeling b = EXCITED; + std::cout << a << ":" << b << std::endl; return 0; } ``` @@ -106,7 +114,7 @@ char c3 = static_cast(Color3::RED); ## 类中的枚举类型 -有时我们希望某些常量只在类中有效。 由于#define 定义的宏常量是全局的,不能达到目的,于是想到实用const 修饰数据成员来实现。而const 数据成员的确是存在的,但其含义却不是我们所期望的。 +有时我们希望某些常量只在类中有效。 由于#define 定义的宏常量是全局的,不能达到目的,于是想到使用const 修饰数据成员来实现。而const 数据成员的确是存在的,但其含义却不是我们所期望的。 const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。 diff --git a/basic_content/enum/classic_practice b/basic_content/enum/classic_practice deleted file mode 100755 index f9f67b7aad21345bab72ac320341410e3d763f7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9328 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 diff --git a/basic_content/enum/classic_practice.cpp b/basic_content/enum/classic_practice.cpp index f8315217..b0d3a936 100644 --- a/basic_content/enum/classic_practice.cpp +++ b/basic_content/enum/classic_practice.cpp @@ -1,24 +1,10 @@ -/** - * @file classic_practice.cpp - * @brief g++ -o classic_practice classic_practice.cpp -std=c++11 - * @author 光城 - * @version v1 - * @date 2019-08-07 - */ - #include using namespace std; /** * @brief namespace解决作用域不受限 */ -namespace Color -{ - enum Type - { - RED=15, - YELLOW, - BLUE - }; +namespace Color { +enum Type { RED = 15, YELLOW, BLUE }; }; /** @@ -32,56 +18,40 @@ namespace Color * 这里用结构体而非类,一是因为本身希望这些常量可以公开访问, * 二是因为它只包含数据没有成员函数。 */ -struct Color1 -{ - enum Type - { - RED=102, - YELLOW, - BLUE - }; +struct Color1 { + enum Type { RED = 102, YELLOW, BLUE }; }; /** * @brief C++11的枚举类 * 下面等价于enum class Color2:int */ -enum class Color2 -{ - RED=2, - YELLOW, - BLUE -}; +enum class Color2 { RED = 2, YELLOW, BLUE }; -enum class Color3:char; // 前向声明 +enum class Color3 : char; // 前向声明 // 定义 -enum class Color3:char -{ - RED='r', - BLUE -}; +enum class Color3 : char { RED = 'r', BLUE }; + +int main() { + // 定义新的枚举变量 + Color::Type c = Color::RED; + cout << c << endl; + /** + * 上述的另一种方法: + * using namespace Color; // 定义新的枚举变量 + * Type c = RED; + */ + Color1 c1; + cout << c1.RED << endl; + + Color1::Type c11 = Color1::BLUE; + cout << c11 << endl; -int main() -{ - // 定义新的枚举变量 - Color::Type c = Color::RED; - cout<(c2) << endl; - Color1::Type c11 = Color1::BLUE; - cout<(c2) << endl; - - char c3 = static_cast(Color3::RED); - cout<(Color3::RED); + cout << c3 << endl; + return 0; } diff --git a/basic_content/enum/tradition_color.cpp b/basic_content/enum/tradition_color.cpp index 2136b327..8325253f 100644 --- a/basic_content/enum/tradition_color.cpp +++ b/basic_content/enum/tradition_color.cpp @@ -1,10 +1,12 @@ #include using namespace std; -enum Color {RED,BLUE}; -enum Feeling {EXCITED,BLUE}; +enum Color { RED, BLUE }; +enum Feeling { EXCITED, BLUE }; -int main() -{ - return 0; +int main() { + Color a = BLUE; // error + Feeling b = EXCITED; + std::cout << a << ":" << b << std::endl; + return 0; } diff --git a/basic_content/explicit/BUILD b/basic_content/explicit/BUILD new file mode 100644 index 00000000..4017d0f4 --- /dev/null +++ b/basic_content/explicit/BUILD @@ -0,0 +1,9 @@ +# please run `bazel run basic_content/explicit:explicit` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +# Don't panic if you get compilation errors, this is what this code demonstrates, as expected. +cc_binary( + name = "explicit", + srcs = ["explicit.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/explicit/explicit b/basic_content/explicit/explicit deleted file mode 100755 index ab3a4124b4c8e2fc61e774ca575ca55d4998cb7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9288 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 diff --git a/basic_content/explicit/explicit.cpp b/basic_content/explicit/explicit.cpp index f6596359..2fe212cf 100644 --- a/basic_content/explicit/explicit.cpp +++ b/basic_content/explicit/explicit.cpp @@ -2,45 +2,50 @@ using namespace std; -struct A -{ - A(int) { } - operator bool() const { return true; } +struct A { + A(int) {} + operator bool() const { return true; } }; -struct B -{ - explicit B(int) {} - explicit operator bool() const { return true; } +struct B { + explicit B(int) {} + explicit operator bool() const { return true; } }; void doA(A a) {} void doB(B b) {} -int main() -{ - A a1(1); // OK:直接初始化 - A a2 = 1; // OK:复制初始化 - A a3{ 1 }; // OK:直接列表初始化 - A a4 = { 1 }; // OK:复制列表初始化 - A a5 = (A)1; // OK:允许 static_cast 的显式转换 - doA(1); // OK:允许从 int 到 A 的隐式转换 - if (a1); // OK:使用转换函数 A::operator bool() 的从 A 到 bool 的隐式转换 - bool a6(a1); // OK:使用转换函数 A::operator bool() 的从 A 到 bool 的隐式转换 - bool a7 = a1; // OK:使用转换函数 A::operator bool() 的从 A 到 bool 的隐式转换 - bool a8 = static_cast(a1); // OK :static_cast 进行直接初始化 - - B b1(1); // OK:直接初始化 -// B b2 = 1; // 错误:被 explicit 修饰构造函数的对象不可以复制初始化 - B b3{ 1 }; // OK:直接列表初始化 -// B b4 = { 1 }; // 错误:被 explicit 修饰构造函数的对象不可以复制列表初始化 - B b5 = (B)1; // OK:允许 static_cast 的显式转换 -// doB(1); // 错误:被 explicit 修饰构造函数的对象不可以从 int 到 B 的隐式转换 - if (b1); // OK:被 explicit 修饰转换函数 B::operator bool() 的对象可以从 B 到 bool 的按语境转换 - bool b6(b1); // OK:被 explicit 修饰转换函数 B::operator bool() 的对象可以从 B 到 bool 的按语境转换 -// bool b7 = b1; // 错误:被 explicit 修饰转换函数 B::operator bool() 的对象不可以隐式转换 - bool b8 = static_cast(b1); // OK:static_cast 进行直接初始化 - - return 0; +int main() { + A a1(1); // OK:直接初始化 + A a2 = 1; // OK:复制初始化 + A a3{1}; // OK:直接列表初始化 + A a4 = {1}; // OK:复制列表初始化 + A a5 = (A)1; // OK:允许 static_cast 的显式转换 + doA(1); // OK:允许从 int 到 A 的隐式转换 + if (a1) + ; // OK:使用转换函数 A::operator bool() 的从 A 到 bool 的隐式转换 + bool a6(a1); // OK:使用转换函数 A::operator bool() 的从 A 到 bool 的隐式转换 + bool a7 = a1; // OK:使用转换函数 A::operator bool() 的从 A 到 bool 的隐式转换 + bool a8 = static_cast(a1); // OK :static_cast 进行直接初始化 + + B b1(1); // OK:直接初始化 + // B b2 = 1; // 错误:被 explicit + // 修饰构造函数的对象不可以复制初始化 + B b3{1}; // OK:直接列表初始化 + // B b4 = { 1 }; // 错误:被 explicit + // 修饰构造函数的对象不可以复制列表初始化 + B b5 = (B)1; // OK:允许 static_cast 的显式转换 + // doB(1); // 错误:被 explicit + // 修饰构造函数的对象不可以从 int 到 B 的隐式转换 + if (b1) + ; // OK:被 explicit 修饰转换函数 B::operator bool() 的对象可以从 B 到 bool + // 的按语境转换 + bool b6(b1); // OK:被 explicit 修饰转换函数 B::operator bool() 的对象可以从 B + // 到 bool 的按语境转换 + // bool b7 = b1; // 错误:被 explicit 修饰转换函数 + // B::operator bool() 的对象不可以隐式转换 + bool b8 = static_cast(b1); // OK:static_cast 进行直接初始化 + + return 0; } diff --git a/basic_content/extern/README.md b/basic_content/extern/README.md index dd75f50c..215d2015 100644 --- a/basic_content/extern/README.md +++ b/basic_content/extern/README.md @@ -82,7 +82,7 @@ extern "C" { #include "add.h" } int main() { - add(2,3); + std::cout << add(2, 3) << std::endl; return 0; } ``` @@ -99,6 +99,8 @@ gcc -c add.c g++ add.cpp add.o -o main ``` +如果使用bazel编译,运行:`bazel run basic_content/extern/extern_c++:main` + 而通常为了C代码能够通用,即既能被C调用,又能被C++调用,头文件通常会有如下写法: ```c diff --git a/basic_content/extern/extern_c++/BUILD b/basic_content/extern/extern_c++/BUILD new file mode 100644 index 00000000..cfc2abe9 --- /dev/null +++ b/basic_content/extern/extern_c++/BUILD @@ -0,0 +1,15 @@ +# please run `bazel run basic_content/extern/extern_c++:main` +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") + +cc_library( + name = "add", + srcs = ["add.c"], + hdrs = ["add.h"], +) + +cc_binary( + name = "main", + srcs = ["add.cpp"], + deps = [":add"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/extern/extern_c++/add.cpp b/basic_content/extern/extern_c++/add.cpp index 8ed76fa8..492f8483 100644 --- a/basic_content/extern/extern_c++/add.cpp +++ b/basic_content/extern/extern_c++/add.cpp @@ -1,9 +1,9 @@ #include using namespace std; extern "C" { - #include "add.h" +#include "add.h" } int main() { - add(2,3); - return 0; + std::cout << add(2, 3) << std::endl; + return 0; } diff --git a/basic_content/extern/extern_c++/add.h b/basic_content/extern/extern_c++/add.h index 6984cdf6..41c359e7 100644 --- a/basic_content/extern/extern_c++/add.h +++ b/basic_content/extern/extern_c++/add.h @@ -1,4 +1,4 @@ #ifndef ADD_H #define ADD_H -extern int add(int x,int y); +extern int add(int x, int y); #endif diff --git a/basic_content/extern/extern_c++/add.o b/basic_content/extern/extern_c++/add.o deleted file mode 100644 index 4c8c0166688e71a05f7f34c991ae4669b52a5660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1248 zcmbtT%}T>S5S}#kw<=XU2=x$8D(I3(4eCKEr79u{VvZtd8xgcEG+R(Xy$RKekKiNt z4qkfn=nMD&-g*#prrEXY8ZSDK{bs(MZ)f%=*M;r%gkgX*16H9MNfy9Lbp2e%%|QzK z!P{)UHZR|sjrN`QephH4&j(Mik=AnN(8 z$I|1$83$JOxeu%uhQLa-N+qZwSFQ1YZR~jSA@@rs!0N%N&w}H_qq<)SM5X^h2IX`I z`bp%(vS0fYvHtd^kS9(*`F)YEgRY;(1bQET)z6`p*0k|cP1bi+5`9@;;-bQ-skdsN z_);gSEp&+ccGno+i-aYC67+wefD`oEaxy{SqbM{X;sHduBdM4CD02GQk)$Q`@*IdG i)BBI>o$^{VpuI!@gNRgHuTOo&)qfC$QbI35um1^?FiF+` diff --git a/basic_content/extern/extern_c++/main b/basic_content/extern/extern_c++/main deleted file mode 100755 index 451dd010f25752b80536895e8fcedd4f53e1729b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8960 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 diff --git a/basic_content/extern/extern_c/main b/basic_content/extern/extern_c/main deleted file mode 100755 index f026f11a1bf6d3141b9b93812b53981122ec3df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8608 zcmeHNU2Ggz6~4RczckKzohGgG0~xi6S$J+aU>G1S>c)$j`@Nrj5+s@`bI}Y#fx|iNF*D?M3+1l zIr$PDxnakseL;2dLbX9^$PRx(NqE|ZEG@`NJ29< znMx{+B@XoVggdR>`fhy>A~_e)x&AFw0 zrst~p#vOZeA=-M5*04hi&O7-}eennDH6gN%0{|{1QP|+s>N8MzK9rfRXnrbepU76f z_kG|B!9E~Beqr#PlfY2>RhnK`Xv~*rkfr0`JXvzz`Y4xOIXm#t+3pq30x}n>ADs<- zCG=z{mk$kuBE9E!-Kx{jnR6|~kM`tl_vGH}edva~Mspwgmiq4G^XBvK+gjV7x&OVn zcYAZUyAUD2>AE>H?=knjmwlHm;MWF2PlpCW$3oWpY%$}9xUMpuy2KvL63;f@<3W^6 zb7nhI&`9@!N5I4A-A}=v2LCPiv*0(uZ-TdDBGG+Cd*U_7`F&?BqWSe~omp zJOY=n9weGoTnaex8kKpyGR*o6+1jAw(^ys#@ph5-SKFjk2;LvbwE}caSk4jAI)RAo z|Gtw?k$ll>5G(HaR6bf85nc8g#Kb-FjQynIv=1O^a+uhxI5S!tO2TrLh}R74&+8&u zIuhOQFfpa_vwld)TsPyf36R7xmL;-3hVsX9P0AkSx2)u#vMcrfo$)@_o#^Ua>NwEZ z`30?cU^tt!v)UfLU2kpa$V#d0+ie|sYrEdo_K;)HcDJ^5w05-ab;owgKFqG5*Kn(` zKlB#%%cVviEOtfzs=|CJ_pdI@lX5*~QH6f`M6IZF9ekLbeErJftP?{OZO2`g(DxVw??Pp`zYjcu!Lvr$O+2SgsFl+L27s~Y;#X?2@dkgPR%KbML z?&os-W;_zTs!_P;l#OWjs zihs!!|BUoseO-P8eWiZ= zoj3}80Kaeg7fQJzL?qCjj@^|<5b>&a*m5BIv{&&!8Qd53< z8+xkW9p|5S@&5(%8%2fZ=SbSl*xAuheFU%V4tDliy*)=GmL+2GbbKt4vEymWp0q|L zQptD*9gj}6iABDtgbMFat!`6AGrRhQb)dH|9O||D_U}L19kC*zaBnwdkncA~GFjOPVf91~ zS;gUr9O|UOiA0Ad;#8xs;<2b5WmxgGs9}`82*pss%Xvo%-?A5`uw_!#cr+P9NUNt0 zUa>^d%4Xt-UaW??1bH}qdEHPY4;Yot*S4&9p=YKi?dUML zop$&*w-QOrgyTX_rtG*L3iq_w(J>{BCA0c)Hi1{#iI~ty8johig&vzuBA&zTv|~9D zPiGRTWSL;WmX1$E37}fXCv2h1?&)aiV=0JsddYVq z!R@b)zzu1llZg@3kg_Q}G<3amjHA#omnShl%Wt;-L89L?+;WBIC9l)?yA7|~IW+l} z(t{9caq#mt;x!-@zl&&6DxUZ`#hNxWO7XnzvsJ*I?5MaK-v#|`tgSi!MXw<}FDeDs zuRgaF_8-y-r^7gCFTwcBUIP;CJ0ugP!{obK>brX%@FaA!*I>Nx8IV9~0}^zk!r483 z$6%qo0^@mI8dUfih2;9#kNGpO)82z+L*+LVUQ>9AQ(C`L%k>70DdUF}en{b)lq2VN z_y08Pgbyn}-ak!Mz*8(Y{ycP47x$Cb&9e&6zb`7h%*AcuIUJ>UUSD5w^`9~P9f$b^ z7oOMQ3kuKmGTtq}`tx^4{yzCcX)?4K$LcFCJnttKRQ^q_{=3KT*TB=KS2bLPeFuN9 zbo;yIH-T*^!Si~$iGqUM{%-lN@SzepKkoyyPl{=lRX~c^+JJ z<>!6T3Uvy^{*F|XS^p0hO6xD|pHu>kfr>MZ`HBnA>rzeOxlRtlIF|3AK|1a~uk%_J z(Cx2=gW5i|e* diff --git a/basic_content/friend/BUILD b/basic_content/friend/BUILD new file mode 100644 index 00000000..d3f5b85b --- /dev/null +++ b/basic_content/friend/BUILD @@ -0,0 +1,15 @@ +# please run `bazel run basic_content/friend:friend_class` +# please run `bazel run basic_content/friend:friend_func` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "friend_class", + srcs = ["friend_class.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "friend_func", + srcs = ["friend_func.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/friend/friend_class b/basic_content/friend/friend_class deleted file mode 100755 index edc462927f3e0e9a1a2a631f274d6a4e69bd4498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9344 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 XW?bBV-oI#>)vDjC44$wl?e+f~T^ijn diff --git a/basic_content/friend/friend_class.cpp b/basic_content/friend/friend_class.cpp index bfa2372f..b5857db1 100644 --- a/basic_content/friend/friend_class.cpp +++ b/basic_content/friend/friend_class.cpp @@ -2,27 +2,23 @@ using namespace std; -class A -{ +class A { public: - A(int _a):a(_a){}; - friend class B; + A(int _a) : a(_a){}; + friend class B; + private: - int a; + int a; }; -class B -{ +class B { public: - int getb(A ca) { - return ca.a; - }; + int getb(A ca) { return ca.a; }; }; -int main() -{ - A a(3); - B b; - cout<Allem3`v<>-S9b5Y9*iPc%*pdC5 zwH0Nl0-da`kaY}I8fa)6lh7t@lZJ#4YE!jpVFIaWLX-BTj=mU5MwelcK`f#1at@ z>%?_p5s+G30jVKwmYC10(9G+UoeR7MSDVuW+MEGdV9wPs=N1yD`brc~MU%g{%oLdm z;gtaSQCsJ)k|OvXSztb<+VM0sOp;gL2`0Y=w-mwm$O7~8s$tBzf7Ca+`c&LLX8;n( z0b-(4-bpk(|MAnFBI+BrW zHl7uFxNo~2i)R$vx4k2oPR08ogUPt5tFF0!N3YSANN4rINH*RQP9=;^e`s9jz|+ZW zsC#QqZ@O0x0q8Ya;;C3N9PKsy{^&>~qZ^q>!pMfBp->O7&4`eQ>glYJiAP4meR^NB z9_npHYb)#MFzZ0bXgX&UYfA|9JIY-~Z=(OiF6ib_YTg>vVUHWF=Aagl6G55`lrUr=lXAZjq(mzq8`PqzXRU&~M zt43_bb0I9ZCV`#7CGJqq$$=F@MbZ%&Hy_0o

40pReB|aoQWyQkF75Z`w=MmMHNC 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 KVVlxk|GxpiINdt{ diff --git a/basic_content/friend/friend_func.cpp b/basic_content/friend/friend_func.cpp index 8ef67ccd..d56d1ff0 100644 --- a/basic_content/friend/friend_func.cpp +++ b/basic_content/friend/friend_func.cpp @@ -1,33 +1,20 @@ -/** - * @file friend_func.cpp - * @brief 友元函数 - * @author 光城 - * @version v1 - * @date 2019-08-06 - */ - #include using namespace std; -class A -{ +class A { public: - A(int _a):a(_a){}; - friend int geta(A &ca); ///< 友元函数 + A(int _a) : a(_a){}; + friend int geta(A &ca); ///< 友元函数 private: - int a; + int a; }; -int geta(A &ca) -{ - return ca.a; -} +int geta(A &ca) { return ca.a; } -int main() -{ - A a(3); - cout<+v9gw~_wv%{s?96`d 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 QZC0*+uQGVfrnJ}pFPw$%F8}}l diff --git a/basic_content/func_pointer/func_pointer.cpp b/basic_content/func_pointer/func_pointer.cpp index 4fceb3c4..b24bd31a 100644 --- a/basic_content/func_pointer/func_pointer.cpp +++ b/basic_content/func_pointer/func_pointer.cpp @@ -6,28 +6,26 @@ * @date 2019-07-20 */ -#include +#include using namespace std; /** - * @brief 定义了一个变量pFun,这个变量是个指针,指向返回值为空和参数为int的函数的指针! + * @brief + * 定义了一个变量pFun,这个变量是个指针,指向返回值为空和参数为int的函数的指针! */ -void (*pFun)(int); +void (*pFun)(int); /** * @brief 代表一种新类型,不是变量!所以与上述的pFun不一样! */ -typedef void (*func)(void); +typedef void (*func)(void); -void myfunc(void) -{ - cout<<"asda"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 diff --git a/basic_content/inline/inline.cpp b/basic_content/inline/inline.cpp index 5b1463b6..064ee74f 100644 --- a/basic_content/inline/inline.cpp +++ b/basic_content/inline/inline.cpp @@ -1,57 +1,42 @@ -#include #include "inline.h" - - +#include using namespace std; /** - * @brief inline要起作用,inline要与函数定义放在一起,inline是一种“用于实现的关键字,而不是用于声明的关键字” + * @brief + * inline要起作用,inline要与函数定义放在一起,inline是一种“用于实现的关键字,而不是用于声明的关键字” * * @param x * @param y * - * @return + * @return */ -int Foo(int x,int y); // 函数声明 -inline int Foo(int x,int y) // 函数定义 +int Foo(int x, int y); // 函数声明 +inline int Foo(int x, int y) // 函数定义 { - return x+y; + return x + y; } - - // 定义处加inline关键字,推荐这种写法! -inline void A::f1(int x){ - - -} - - +inline void A::f1(int x) {} /** - * @brief 内联能提高函数效率,但并不是所有的函数都定义成内联函数!内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。 + * @brief + * 内联能提高函数效率,但并不是所有的函数都定义成内联函数!内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。 * 如果执行函数体内代码的时间相比于函数调用的开销较大,那么效率的收货会更少!另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。 * 以下情况不宜用内联: * (1) 如果函数体内的代码比较长,使得内联将导致内存消耗代价比较高。 * (2) 如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。 * - * @return + * @return */ -int main() -{ - - - cout< +#include using namespace std; -class Base -{ - public: - inline virtual void who() - { - cout << "I am Base\n"; - } - virtual ~Base() {} +class Base { +public: + inline virtual void who() { cout << "I am Base\n"; } + virtual ~Base() {} }; -class Derived : public Base -{ - public: - inline void who() // 不写inline时隐式内联 - { - cout << "I am Derived\n"; - } +class Derived : public Base { +public: + inline void who() // 不写inline时隐式内联 + { + cout << "I am Derived\n"; + } }; -int main() -{ - // 此处的虚函数 who(),是通过类(Base)的具体对象(b)来调用的,编译期间就能确定了,所以它可以是内联的,但最终是否内联取决于编译器。 - Base b; - b.who(); +int main() { + // 此处的虚函数 + // who(),是通过类(Base)的具体对象(b)来调用的,编译期间就能确定了,所以它可以是内联的,但最终是否内联取决于编译器。 + Base b; + b.who(); - // 此处的虚函数是通过指针调用的,呈现多态性,需要在运行时期间才能确定,所以不能为内联。 - Base *ptr = new Derived(); - ptr->who(); + // 此处的虚函数是通过指针调用的,呈现多态性,需要在运行时期间才能确定,所以不能为内联。 + Base *ptr = new Derived(); + ptr->who(); - // 因为Base有虚析构函数(virtual ~Base() {}),所以 delete 时,会先调用派生类(Derived)析构函数,再调用基类(Base)析构函数,防止内存泄漏。 - delete ptr; + // 因为Base有虚析构函数(virtual ~Base() {}),所以 delete + // 时,会先调用派生类(Derived)析构函数,再调用基类(Base)析构函数,防止内存泄漏。 + delete ptr; - return 0; -} + return 0; +} diff --git a/basic_content/macro/BUILD b/basic_content/macro/BUILD new file mode 100644 index 00000000..9fd999fb --- /dev/null +++ b/basic_content/macro/BUILD @@ -0,0 +1,15 @@ +# please run `bazel run basic_content/macro:do_while` +# please run `bazel run basic_content/sig_examp:sig_examp` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "do_while", + srcs = ["do_while.cpp"], + copts = ["-std=c++11"], +) + +cc_binary( + name = "sig_examp", + srcs = ["sig_examp.cpp"], + copts = ["-std=c++11"], +) diff --git a/basic_content/macro/do_while b/basic_content/macro/do_while deleted file mode 100755 index ce870355a31e584f8a9410bf0885232b45550550..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9464 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 diff --git a/basic_content/macro/do_while.cpp b/basic_content/macro/do_while.cpp index 68af1326..b13eaaf6 100644 --- a/basic_content/macro/do_while.cpp +++ b/basic_content/macro/do_while.cpp @@ -2,75 +2,78 @@ #include using namespace std; -#define f1() cout<<"f1()"<0) - fun(); + if (1 > 0) + fun(); - if(2>0) - fun1(); + if (2 > 0) + fun1(); - f(); - ff(); - fc(); - return 0; + f(); + ff(); + fc(); + return 0; } diff --git a/basic_content/macro/sig_examp b/basic_content/macro/sig_examp deleted file mode 100755 index b3423603ba11d3e62a3314c1f6e6bb20c5dc9dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14360 zcmeHOadcbNdB3vk*ddPMBu?uk4N*GMIk2cw>=@IIBHK}riIaG?lV(78mL=I1kt|nw za-FQKrcP2!2>5huN!zn?*kGJ)>mX%2T@G}P!8vievU38Z98Os`wk3;H3UeW&?gn_j z@4oxVPfvQ?+MWKh?)SUj_uYHHd*6L}_kI3spkr5=!y%Z;#3uwvW7U2M8Q((G zd8MeZX0crOg{9L7#idU5 zpSc>Y_-H)V*VOpYcw}2VHk29NHrm{@t*OzIPI|V>ag%@2y>;(?*%HUm4T;8Aiw}jG z>d%iq>c8^vb5jQ=zy6t>a~qFN-|)+V+7s%FM~%ADHMe)`@pOB*Tle|GgQ1kBr$R9u zK%hH>uRs?n8u~)%SXfJ@^;9&JXz$T_yjr09My+f2-fsOyO$(2X`h33ah8C1!Lj&#I zjav5(t;eSY0z$ieuXMK47Z{O(-W*G&HRwkh+lOL$9#6*8fzDlB-N|kZR@%Vms5Tr; zrISOUcuYT{jd;m=w{4rYgJ?|0jz+m{n-1F=xA_8{yTe_(yBiR9M5{466p5D#*e{4x z6PX%8fV+}GSj2zX4yy3Uc`TmBQoRcIVE%S!7?v@ja5AII4$=g~@}&f=!hvvDOVc9s z32pz-r(;7Ath{t45v9s7uTCt?@L?@Hcv$NX#o}TZYe4VE6oyAbT1bzM#^7Hg1GR(` zq1cePwXIES@OVYr!GkTW?V8WiAa3nwZ-ofB(X-uW7LBsD-P4#aZTIY;i>XZR?6kj^ z;m_FT%OO?ZL)`dOqC|hjUCV);{_{}geYf)?M^*??DK3)(kOP{yG-bUX{QFNH#?OFd z;tgfNLRQGcSdh(d6gSn`U#a7ZUiM6PwHZ$vE%cO3k$uL(!M@-%3|U3pZ9VH3W}gpZnViZ|1k38(uy(|smf z{S=Z_lP27JUpj5V>(~kSBPM*U3IDnYr{5w>!SSC|1y5G|sMall$EWp*>~73vaQuAL zjG?ix<3&_0YdZeS_-)_DSwq@S^~LYDSv@v`q`Q5mGb>0)0F2rrTjUPuOZnl z<)b9i)aSfXPLWJgo^wn2Zjx!Lb2U=#BblZ+C!~Bk$uzaOx%UBV=^~k?H20d6ZzGwe zEO$}Ltt8V_<))?lxwUT5KM7fq?~V3}7w!s9{7Z2B(p+ax`|R{1HGUDCeby`4?8r*L z$j-v>YX7QD`0;yo78AEWxNRCNI6m(RPFx<@aF$%rbge#gjw%*jgYq%y|IiH0Qoo1g zDXQNey!TD%;Mw<`a1flB3qG5@CFr;ieBph4UEbRY_O@!1I5cClKX&t1FdmUvy&s0z zAq3#ig^Ck^9B<2(&Ivpq1jla?nTpr{5O#TIKP7{Oi-&SYVMFEa;JrUNjXp+#C(F0g z(*Py{S>N>3Sq%K#6uzWs_G|AgELgG60}Gxy9)_pj#B6pD;R&Alk`zxJr&TfaJVg&x zH_NKL=9`8gsZi~|lQ=O0R|axHMlah8qp6F^!|zL-eQkJ+=_2i2i{~m;AphC8C z7g+$*wSIC%OjE`})*&(ZJWY!cYycct|d>7Ju)Ec+yaLYL7P1kv)zmIEyl3oZLw zdOA*Rd3>cC7t^V2Pk?u~PrTDU@q>=7)N)nu+4r2;C;t88NW2Rp|G=g0lvwCPr3NDqMDiBR1M-i5fo1pXARnRmfy zPy7(VR*j(j4)|xlkAd?&#&NVuI7Vw68>%a-CLNVEgwq+vJp5h{&Qw|-=K@e5{n4K< zEcoG9xN3H}>TX-L;?q@Q;+FLvzrNwR50eklA#xn;?2s*1I_Z(dX|!wjAzvdHM=wHJ zetwN#w76cG zdg}+xy9vean-lF+|Yx5 ztE)=JuNLE-gCAoBkTZi87978Q{cm7RRJ`RBCmbz*T`qEtiigU@v9f0zkCuz?IV%AD z(76L$DL4PvVh2lnDFRCoSc1ePMO6oI7(EJa``0{_n<(1~*tqFOv56M2;^1$@z? z1d)}~nXDP7GgP8#gNYhEHxlvL;A6@^evV7x_pBR~%x8b=l{~NB!}9YA9b^&x$NLLO z;-|~}#PaWa>njYI&qgnn88RJk5p8uEoXl;{JBe?;*n#dj%wK=FRXrIG0i zuPi?1uHWC68PYTE9e7FM-PV+mlJ5_EO&)Kf$LHH>RJgZ$eNEmb?@cE2l0|yc&|Ky( zs-yQAJtc9c&`aXw`SojdMsGrR-4^1@1h4Nxyi$}}7fw+ncs&*BFBiNn3-N0Nuirv^ zMgBT2#H)o@%~v75QVf@v52tYD^F|8wR|(!13h^3oM(r1c`09M#Lm|EfC(C{_B+E{* zR?zWY=}?{o4@3YcBomZ8Fd41sCO`k}L?Qt_l#O7+t%J661I8>FA&_0TT$Ym3(5?FzT9 z+l2H}ybk{rH!im*URNW~UqhX>(ET>}A4}XN=qx>fH-Ac#I zrfu-Qkp7GJftMt1_F$BMZi7=EQmJumSGYCL9vZPj@#(J44mRjukFnA zBOCpnDco=IUx)MGQvG?r2B*|WiYL8?B3cBl(=t(Q+is@^!Iy^%AwuX)}?i{ zclRJeXfY8;(-T^lQh|^nq(ze2Ks?zOifa))nM!M+%%}(_6T|VS9*uZz+;LN5X(g>c zHWbrBsZ{8Q79G-4M?`-rl!$7POd@dvCMHRPre2_$jtywh(NJR86CNIx87Cdhniflv zBE&|YMp+>`Qj7?RA=&3BB&0iqkZcmcJC{@@EM;#D$tkyX>}zf5fJvrLYu98ViKgx9 zYS|Oe0(*B-a+Hh%myz+O1%gT;xU(zoVBfA?-2vn>wX}8w$f%&(kwQS`T?uXH@9k~b z)83}iTl{{Rt%8&kN<^Xj9+^I)U?YhIZe-R=IGvFpg#14za>0`&LyD4vO8PYt!YBxq z-k36PEH%a6DS^o1{TJnu85v{0Y^IU5fqj_sNNh;Uq@xHnwO2YnO^bx|kdZYcV{Dgj zW}ClNG&)Kw;@L`Ax}_m)j+YVTdQoPSRV9*6YJ*sslvlSnyT)SH`qF9cEOAp(lyW08 zm^c}%sBhGLCpr__xa#CG^0^0gjv)QbE?DGI^r^S?3SKv){J4%x-Cy9~}ORfIm z+(5tIlt)HG`!%OE7WcX!Jr30>y-j%1M-qCd4_r?fe2_~>lZ&Q?g=Z+KM?FY_+op#G zlr%7u@$_Y4NO_J$gomWTPs2M?)BsR@M~8I{iOqx&Zl>ql~Km+zJTbxz1g0h&voVSx&rND`<Hmv^cGRMky_xOY!-S zg2i4G=nRVO`Fa1M0uCxp=U6m$w&(Mr1HkYTBX7^=0`>TvLd54>hGh8QGV#0cp))3K zpU)4vR72a9vT~PihxHGmp3baT=5vPol>MZ#r~Xqvx&I0l^!!J2!uEU~QMcUC@G3=a zpY3`4$CQ1m(&KZBpt9$4IC!{m&cT%3L~o* zT|a-O?0Nq9dFYI?PvtF*g0=tOwAl0iukio1(Dh{|%W%XwR8s%BeLnY*nT5dbw8Y=q z{&y|*d_Htu{rLBy-b@yE;#E|-@S(L$#LwgWe=^p1Tid?^n^pL*J)bwtZzOMv>(!8o z<+o8mePa9kxz4qQg|$7aJP$R#Hpzm|d8?E?|GyGnA8gO#It?3h`+UwdzlppR_m}ON z({q#AK7StOmgeG&!Sdg1$NUmiH`~v<4e6j7Fil4TK0JQjKk51| U)qdwz!~QYecnwjur;3vOH|(?W-T(jq diff --git a/basic_content/macro/sig_examp.cpp b/basic_content/macro/sig_examp.cpp index 85290a72..dfb13ec0 100644 --- a/basic_content/macro/sig_examp.cpp +++ b/basic_content/macro/sig_examp.cpp @@ -1,7 +1,7 @@ -#include -#include #include +#include #include +#include using namespace std; @@ -10,77 +10,73 @@ using namespace std; * (#)字符串操作符 */ ///=========================================== -#define exp(s) printf("test s is:%s\n",s) -#define exp1(s) printf("test s is:%s\n",#s) - -#define exp2(s) #s +#define exp(s) printf("test s is:%s\n", s) +#define exp1(s) printf("test s is:%s\n", #s) +#define exp2(s) #s ///=========================================== /** *(##)符号连接操作符 */ ///=========================================== -#define expA(s) printf("前缀加上后的字符串为:%s\n",gc_##s) //gc_s必须存在 +#define expA(s) printf("前缀加上后的字符串为:%s\n", gc_##s) // gc_s必须存在 -#define expB(s) printf("前缀加上后的字符串为:%s\n",gc_ ## s) //gc_s必须存在 +#define expB(s) printf("前缀加上后的字符串为:%s\n", gc_##s) // gc_s必须存在 #define gc_hello1 "I am gc_hello1" - ///=========================================== /** * (\)续行操作符 */ ///=========================================== -#define MAX(a,b) ((a)>(b) ? (a) \ - :(b)) - -int main() { - ///=========================================== - /** - * (#)字符串操作符 - */ - ///=========================================== - exp("hello"); - exp1(hello); - - string str = exp2( bac ); - cout< (b) ? (a) : (b)) + +int main() { + ///=========================================== + /** + * (#)字符串操作符 + */ + ///=========================================== + exp("hello"); + exp1(hello); + + string str = exp2(bac); + cout << str << " " << str.size() << endl; + /** + * 忽略传入参数名前面和后面的空格。 + */ + string str1 = exp2(asda bac); + /** + * 当传入参数名间存在空格时,编译器将会自动连接各个子字符串, + * 用每个子字符串之间以一个空格连接,忽略剩余空格。 + */ + cout << str1 << " " << str1.size() << endl; + + ///=========================================== + /** + * (#)字符串操作符 + */ + ///=========================================== + + const char *gc_hello = "I am gc_hello"; + expA(hello); + expB(hello1); + + char var1_p[20]; + char var2_p[20]; + + // 连接后的实际参数名赋值 + strcpy(var1_p, "aaaa"); + strcpy(var2_p, "bbbb"); + + ///=========================================== + /** + * (\)续行操作符 + */ + ///=========================================== + int max_val = MAX(3, 6); + cout << max_val << endl; + return 0; } diff --git a/basic_content/maohao/.README.md.un~ b/basic_content/maohao/.README.md.un~ deleted file mode 100644 index a02eba88a2872e31c0401bb327dc447521b006f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmWH`%$*;a=aT=Ff$98)zYBvJyCUCSI(9|yTI8m{OmPujiKjKrr9Y0(aBTX|z`(!< z#7a+Fw?ElC`N{6Z&lfblSl;-4&#Y)GE4}1`f>;d*tqD}c3&f&8%m~CxKnwyP8ipC- z64oiQfMgjN;xB+?fdHlu#0E*h3}N^W1Yi-6%qXBi2mqr)1{@s>3|}RH=JNnCD7HZu z6ct3ox@jXgB0;K=0Vq;I5vd3g9F0g&D9{oBBT@mHudqg>8kX#vo0y-Gn2(Z$O&g!D F0sz?-VnqM| diff --git a/basic_content/maohao/BUILD b/basic_content/maohao/BUILD new file mode 100644 index 00000000..2abf7590 --- /dev/null +++ b/basic_content/maohao/BUILD @@ -0,0 +1,8 @@ +# please run `bazel run basic_content/maohao:maohao` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "maohao", + srcs = ["maohao.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/maohao/README.md~ b/basic_content/maohao/README.md~ deleted file mode 100644 index 228d6278..00000000 --- a/basic_content/maohao/README.md~ +++ /dev/null @@ -1,14 +0,0 @@ -# :: 范围解析运算符那些事 - -## 关于作者: - -个人公众号: - -![](../img/wechat.jpg) - -- 全局作用域符(::name):用于类型名称(类、类成员、成员函数、变量等)前,表示作用域为全局命名空间 -- 类作用域符(class::name):用于表示指定类型的作用域范围是具体某个类的 -- 命名空间作用域符(namespace::name):用于表示指定类型的作用域范围是具体某个命名空间的 - -具体代码见:[::.cpp](::.cpp) - diff --git a/basic_content/maohao/maohao.cpp b/basic_content/maohao/maohao.cpp index 3460e76e..1aab3b8e 100644 --- a/basic_content/maohao/maohao.cpp +++ b/basic_content/maohao/maohao.cpp @@ -1,20 +1,19 @@ #include using namespace std; -int count=0; // 全局(::)的count +int count = 0; // 全局(::)的count class A { public: - static int count; // 类A的count (A::count) - + static int count; // 类A的count (A::count) }; // 静态变量必须在此处定义 int A::count; int main() { - ::count=1; // 设置全局的count为1 - A::count=5; // 设置类A的count为2 - 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 T`9=G)Q2#?p;U?RLvG@NUylS!) diff --git a/basic_content/pointer_refer/copy_construct.cpp b/basic_content/pointer_refer/copy_construct.cpp index 1fa28ba8..ecba9b30 100644 --- a/basic_content/pointer_refer/copy_construct.cpp +++ b/basic_content/pointer_refer/copy_construct.cpp @@ -12,24 +12,18 @@ using namespace std; class Copyable { public: - Copyable(){} - Copyable(const Copyable &o) { - cout << "Copied" << endl; - } + Copyable() {} + Copyable(const Copyable &o) { cout << "Copied" << endl; } }; Copyable ReturnRvalue() { - return Copyable(); //返回一个临时对象 -} -void AcceptVal(Copyable a) { - -} -void AcceptRef(const Copyable& a) { - + return Copyable(); // 返回一个临时对象 } +void AcceptVal(Copyable a) {} +void AcceptRef(const Copyable &a) {} int main() { - cout << "pass by value: " << endl; - AcceptVal(ReturnRvalue()); // 应该调用两次拷贝构造函数 - cout << "pass by reference: " << endl; - AcceptRef(ReturnRvalue()); //应该只调用一次拷贝构造函数 + cout << "pass by value: " << endl; + AcceptVal(ReturnRvalue()); // 应该调用两次拷贝构造函数 + cout << "pass by reference: " << endl; + AcceptRef(ReturnRvalue()); // 应该只调用一次拷贝构造函数 } diff --git a/basic_content/pointer_refer/effec b/basic_content/pointer_refer/effec deleted file mode 100755 index a7bf86a27a0754eb4badaaf586b0dc4f4fb8abb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20576 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 +#include using namespace std; -void test1(int* p) -{ - *p = 3; //此处应该首先判断p是否为空,为了测试的需要,此处我们没加。 - return; +void test1(int *p) { + *p = 3; //此处应该首先判断p是否为空,为了测试的需要,此处我们没加。 + return; } -void test2(int& p) -{ - p = 3; //此处应该首先判断p是否为空,为了测试的需要,此处我们没加。 - return; +void test2(int &p) { + p = 3; //此处应该首先判断p是否为空,为了测试的需要,此处我们没加。 + return; } int main() { - int a=10; - int *p=&a; - test1(p); - test2(a); - cout< -#include +#include +#include using namespace std; -#include // use size in graphics also -class A{}; -int main() -{ - cout< - +#include using namespace std; -class A -{ - public: - A(); - ~A(); - static int a; - static void fun3(); - void fun(); - void fun1(); +class A { +public: + A(); + ~A(); + static int a; + static void fun3(); + void fun(); + void fun1(); }; -int main() -{ - cout< +#include using namespace std; -class A -{ - public: - char a; - int b; +class A { +public: + char a; + int b; }; /** @@ -34,39 +33,32 @@ class A * long b * 根据字节对齐2+2+4+8=16 */ -class B:A -{ - public: - short a; - long b; +class B : A { +public: + short a; + long b; }; /** -* 把A的成员拆开看,char为1,int为4,所以是1+(3)+4+1+(3)=12,()为字节补齐 -*/ -class C -{ - A a; - char c; + * 把A的成员拆开看,char为1,int为4,所以是1+(3)+4+1+(3)=12,()为字节补齐 + */ +class C { + A a; + char c; }; -class A1 -{ - virtual void fun(){} -}; -class C1:public A -{ +class A1 { + virtual void fun() {} }; +class C1 : public A {}; +int main() { + cout << sizeof(A) << endl; // 8 + cout << sizeof(B) << endl; // 16 + cout << sizeof(C) << endl; // 12 -int main() -{ - cout< +#include using namespace std; -class A -{ - public: - char a; - int b; +class A { +public: + char a; + int b; }; -class B -{ - public: - short a; - long b; +class B { +public: + short a; + long b; }; /** * @brief 8+16+8=32 */ -class C:A,B -{ - char c; +class C : A, B { + char c; }; +int main() { + cout << sizeof(A) << endl; // 8 + cout << sizeof(B) << endl; // 16 + cout << sizeof(C) << endl; // 32 -int main() -{ - cout< +#include using namespace std; -class A{ +class A { - virtual void fun(); - virtual void fun1(); - virtual void fun2(); - virtual void fun3(); + virtual void fun(); + virtual void fun1(); + virtual void fun2(); + virtual void fun3(); }; -int main() -{ - cout< +#include using namespace std; -class A -{ - public: - char b; - virtual void fun() {}; - static int c; - static int d; - static int f; +class A { +public: + char b; + virtual void fun(){}; + static int c; + static int d; + static int f; }; +int main() { + /** + * @brief 16 字节对齐、静态变量不影响类的大小、vptr指针=8 + */ + cout << sizeof(A) << endl; -int main() -{ - - /** - * @brief 16 字节对齐、静态变量不影响类的大小、vptr指针=8 - */ - cout< +#include using namespace std; -class A -{ - virtual void fun() {} +class A { + virtual void fun() {} }; -class B -{ - virtual void fun2() {} +class B { + virtual void fun2() {} }; -class C : virtual public A, virtual public B -{ - public: - virtual void fun3() {} +class C : virtual public A, virtual public B { +public: + virtual void fun3() {} }; +int main() { -int main() -{ + /** + * @brief 8 8 16 派生类虚继承多个虚函数,会继承所有虚函数的vptr + */ + cout << sizeof(A) << " " << sizeof(B) << " " << sizeof(C); - /** - * @brief 8 8 16 派生类虚继承多个虚函数,会继承所有虚函数的vptr - */ - cout< +#include using namespace std; -class A -{ - virtual void fun() {} +class A { + virtual void fun() {} }; -class B -{ - virtual void fun2() {} +class B { + virtual void fun2() {} }; -class C : public A, public B -{ - public: - virtual void fun3() {} +class C : public A, public B { +public: + virtual void fun3() {} }; +int main() { -int main() -{ + /** + * @brief 8 8 16 派生类继承多个虚函数,会继承所有虚函数的vptr + */ + cout << sizeof(A) << " " << sizeof(B) << " " << sizeof(C); - /** - * @brief 8 8 16 派生类继承多个虚函数,会继承所有虚函数的vptr - */ - cout<shqBnHPe_UA6G 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 M0AiOT(^>vM0n>|1lK=n! diff --git a/basic_content/static/nostatic_class.cpp b/basic_content/static/nostatic_class.cpp index b4e56d26..8f20a7b1 100644 --- a/basic_content/static/nostatic_class.cpp +++ b/basic_content/static/nostatic_class.cpp @@ -1,28 +1,21 @@ -#include -using namespace std; +#include +using namespace std; -class Apple -{ - int i; - public: - Apple() - { - i = 0; - cout << "Inside Constructor\n"; - } - ~Apple() - { - cout << "Inside Destructor\n"; - } -}; +class Apple { + int i; -int main() -{ - int x = 0; - if (x==0) - { - Apple obj; - } - cout << "End of main\n"; -} +public: + Apple() { + i = 0; + cout << "Inside Constructor\n"; + } + ~Apple() { cout << "Inside Destructor\n"; } +}; +int main() { + int x = 0; + if (x == 0) { + Apple obj; + } + cout << "End of main\n"; +} diff --git a/basic_content/static/static_class.cpp b/basic_content/static/static_class.cpp index 007e400e..81d4f103 100644 --- a/basic_content/static/static_class.cpp +++ b/basic_content/static/static_class.cpp @@ -1,28 +1,21 @@ -#include -using namespace std; +#include +using namespace std; -class Apple -{ - int i; - public: - Apple() - { - i = 0; - cout << "Inside Constructor\n"; - } - ~Apple() - { - cout << "Inside Destructor\n"; - } -}; +class Apple { + int i; -int main() -{ - int x = 0; - if (x==0) - { - static Apple obj; - } - cout << "End of main\n"; -} +public: + Apple() { + i = 0; + cout << "Inside Constructor\n"; + } + ~Apple() { cout << "Inside Destructor\n"; } +}; +int main() { + int x = 0; + if (x == 0) { + static Apple obj; + } + cout << "End of main\n"; +} diff --git a/basic_content/static/static_demo.cpp b/basic_content/static/static_demo.cpp index 19100889..b07920cf 100644 --- a/basic_content/static/static_demo.cpp +++ b/basic_content/static/static_demo.cpp @@ -1,24 +1,22 @@ -// the use of static Static -// variables in a Function -#include -#include -using namespace std; +// the use of static Static +// variables in a Function +#include +#include +using namespace std; -void demo() -{ - // static variable - static int count = 0; - cout << count << " "; +void demo() { + // static variable + static int count = 0; + cout << count << " "; - // value is updated and - // will be carried to next - // function calls - count++; -} + // value is updated and + // will be carried to next + // function calls + count++; +} -int main() -{ - for (int i=0; i<5; i++) - demo(); - return 0; -} +int main() { + for (int i = 0; i < 5; i++) + demo(); + return 0; +} diff --git a/basic_content/static/static_error_variable.cpp b/basic_content/static/static_error_variable.cpp index 47b13194..76ba4610 100644 --- a/basic_content/static/static_error_variable.cpp +++ b/basic_content/static/static_error_variable.cpp @@ -1,26 +1,23 @@ -// variables inside a class +// variables inside a class -#include -using namespace std; +#include +using namespace std; -class Apple -{ - public: - static int i; +class Apple { +public: + static int i; - Apple() - { - // Do nothing - }; -}; + Apple(){ + // Do nothing + }; +}; -int main() -{ - Apple obj1; - Apple obj2; - obj1.i =2; - obj2.i = 3; +int main() { + Apple obj1; + Apple obj2; + obj1.i = 2; + obj2.i = 3; - // prints value of i - cout << obj1.i<<" "< -using namespace std; +#include +using namespace std; -class Apple -{ - public: - // static member function - static void printMsg() - { - cout<<"Welcome to Apple!"; - } -}; - -// main function -int main() -{ - // invoking a static member function - Apple::printMsg(); -} +class Apple { +public: + // static member function + static void printMsg() { cout << "Welcome to Apple!"; } +}; +// main function +int main() { + // invoking a static member function + Apple::printMsg(); +} diff --git a/basic_content/static/static_variable.cpp b/basic_content/static/static_variable.cpp index b14780e8..78389db3 100644 --- a/basic_content/static/static_variable.cpp +++ b/basic_content/static/static_variable.cpp @@ -1,24 +1,21 @@ -// variables inside a class +// variables inside a class -#include -using namespace std; +#include +using namespace std; -class GfG -{ - public: - static int i; +class GfG { +public: + static int i; - GfG() - { - // Do nothing - }; -}; + GfG(){ + // Do nothing + }; +}; -int GfG::i = 1; +int GfG::i = 1; -int main() -{ - GfG obj; - // prints value of i - cout << obj.i; -} +int main() { + GfG obj; + // prints value of i + cout << obj.i; +} diff --git a/basic_content/struct/BUILD b/basic_content/struct/BUILD new file mode 100644 index 00000000..ed8f05e1 --- /dev/null +++ b/basic_content/struct/BUILD @@ -0,0 +1,29 @@ +# please run `bazel run basic_content/struct:ext_struct_func` +# please run `bazel run basic_content/struct:struct_func_func` +# please run `bazel run basic_content/struct:struct_func` +# please run `bazel run basic_content/struct:struct_func_cpp` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "ext_struct_func", + srcs = ["ext_struct_func.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "struct_func_func", + srcs = ["struct_func_func.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "struct_func", + srcs = ["struct_func.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "struct_func_cpp", + srcs = ["struct_func.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/struct/ext b/basic_content/struct/ext deleted file mode 100755 index 45104f89893cae70439235bf4bab081661c77884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14536 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 diff --git a/basic_content/struct/ext_struct_func.cpp b/basic_content/struct/ext_struct_func.cpp index 7ab1eb23..d189a853 100644 --- a/basic_content/struct/ext_struct_func.cpp +++ b/basic_content/struct/ext_struct_func.cpp @@ -1,33 +1,31 @@ -#include -#include +#include +#include using namespace std; -struct Base { - int v1; -// private: //error! - int v3; - public: //显示声明public - int v2; - virtual void print(){ - printf("%s\n","Base"); - }; - Base(){cout<<"Base construct"<print(); - delete b; - return 0; + Base *b = new Derived(); + b->print(); + delete b; + return 0; } diff --git a/basic_content/struct/sf b/basic_content/struct/sf deleted file mode 100755 index 321061d21e6b74b8b0d849adf04d1b76e15d119f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8992 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 diff --git a/basic_content/struct/stff b/basic_content/struct/stff deleted file mode 100755 index de4372784a1ac8ea9c10b399a4f029d1afecc810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9152 zcmeHNeQaA-6~DHVG+j5x-8z=FW3@&r+KqTln}&>u?m3Cumyx!iaknv+y*jp&m^pT2 zKX*w*N2_c_rt1i7piY25j7#m7WK@4o`>M0y^B9Ofcu-m~#z@Q+Z|5RMO&?t*}JqLii;> zc2w8J3#16XS0MY#Qo@pM0H+;hvop~zw`KwuiyT))Mp=m z`Pm15{)vb0z4y7F^^-mgC6AjB@CZQ-uhY>z z&6z&8X2eErGlrtclo-n<)8-KH*m%^4 znu+nG34yFs?O~&Rxo0T>;*;1PVTc{_jDeT64bE|ZnoO_h#l7Dh` z$^JGsei=*HBmPX8AQvp|2j}&&Dw)I%QYT(fSblX9E7dLDB4yBG(_YDGEvls>Em-~f& z*Nj;|e?)?(8fPt~;+EeatGNC-yqnf)NRd23nG178(E4AIOif&PM#{e+nYv^gp?m9nVP=vEh&GGWNPxll$5_sGBtJKpp-iy4^2Uq)cRUa;n`dD!i)OknX`S7 zp3^h_<(kk>pFGh>?DXknnwbAQ4F56Iw6^h1A_4o;r)z=2*ktDl^|PIo=2KYPx+xa4gGduv)N z24=1D4}N^1(Jw@PY`&_X&H84v6hRz??kJPQ-K&>f+7h7jehv#S{PKVFX0O&`kF|C`J~?g{ez_I^=9aN5~rtc{g-={m_Gcr?*k|>qpSP&1k26zb2Rer~miB|7s6R;k!t52R@TTV@j3+ zURV;6oSe==MCV&f_!=~s!l6jgI&9ZOa?b$g`_&qWmd{bEmE4HW9TDvZM6|aMy>+gb zA%4uQ5i8yK<~)|nXP+6jC1cx_#8=rBN^VwM?jb5oj1C}@@JS-#wSQbn<^7h=QkN)v zq+XLL#`~1a_2%+u?tp^6dj|7qGwaP;K{wwi|1s#K(=bI51a3QkMyh4Lznbu0Yx<5&yRz0th6|0_~Tcw}s`4Ex%7gf!}gu?mz#Wfn2eyZo; zPq2~u@zrzAt3%MQ6|eb<#Jz%Ut3>=Acoc~X(VsJFp75FeLFoIXX65V0OW?nh{wsA! z`liII*Zc36&@V25H%i@GH;{_o;cs z=ZP->Ux{c8?@M*c_WmXO{0O+O#<-}kk(|y%WzXML=LSY4>gnT0?A^n%v zqk_d-QlF(V--~|piPd7n;eRC#Bveo5{?iPc%B464(S&>p@mJ};#&;o>HFIWuXebav zxa|6_-9~Rue*}@fazM{8M~xVT^eE~U<n0%wRNS#LY}LXGHVkB9<8)OC`)iJn+#i z*R<7EGKP}rq!G<#qZ39VZDuFLP&PW6Fyi^q(FvH?BmlFt+#Z>J0V5BtK~M z7%-<>IpUATw%wr}VI#b=o8q0aOE`_-vk}&ng5JHmjZT;bh5eaqnhRLX+1@THi zhEj#m{i&Uy9X(wtZmDT9GKpv;#UNGOGM3BBZiD=9gRm47bvUUVNL5NI23i#%b@;GF zQyn?g-YIwUS2SaKe&hYAq?tg43UgK@G)3 zN0TwsA!CwzAk+l`beITWagSobs%_*yW^{hRmR9a}Hvpr%DBI6@G)MyX49NuFXDz9G?qc~?B5_IwX{ zQ8g4N9!Xq()?Xr?T$^ zC*u2$`~?8=afw>@f3k7f-vf;LmFh?2YtR&z3}4zxQr%Jl3rN}RgUUXr93CubS_%Fg zi1~dE`xDCkgtF)QvKy!T4Tn9S`(~8=Aa|^Cz~!>P2ORc%k6Wh#5Q?$79IKLm#CMfF z7sKbOpfaTOX(wm@{ScYde{9e9!ichu*o~2P+D|*|`TlrZ*_-6tM$Z0w3VHO?yjm`$ zdnW&$?d&h7{qwMGvf1-}w2_>Gocd1rFVLYXa`}93^}SE~zrmJUzVA_4jp^_OZR0}K%ewdez6_%MTb4#fBKX?*ONW49n0sC zAdK73=ij}`(5bJwgUy8p0AaxrVkOvqivwqS=5%l2vhAv`sg2`&R#ce|QI^ef-)?_Q h)xU#2PN2*2Y{J9s;r)-Md9CuFQ31yfIx?N*{}aP|l5_w7 diff --git a/basic_content/struct/struct_func b/basic_content/struct/struct_func deleted file mode 100755 index 8541eba04debc9e9e2a892f8ac02d5ba9654f50c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8768 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 +#include -struct Base { // public +struct Base +{ // public int v1; -// public: //error - int v2; - //private: - int v3; - //void print(){ // c中不能在结构体中嵌入函数 - // printf("%s\n","hello world"); - //}; //error! + // public: //error + int v2; + // private: + int v3; + // void print(){ // c中不能在结构体中嵌入函数 + // printf("%s\n","hello world"); + // }; //error! }; -void Base(){ - printf("%s\n","I am Base func"); +void Base() +{ + printf("%s\n", "I am Base func"); } -//struct Base base1; //ok -//Base base2; //error +// struct Base base1; //ok +// Base base2; //error -int main() { +int main() +{ struct Base base; - base.v1=1; - //base.print(); - printf("%d\n",base.v1); + base.v1 = 1; + // base.print(); + printf("%d\n", base.v1); Base(); return 0; } diff --git a/basic_content/struct/struct_func.cpp b/basic_content/struct/struct_func.cpp index 09bef266..7153e1d0 100644 --- a/basic_content/struct/struct_func.cpp +++ b/basic_content/struct/struct_func.cpp @@ -1,25 +1,24 @@ -#include -#include +#include +#include -struct Base { - int v1; -// private: //error! - int v3; - public: //显示声明public - int v2; - void print(){ - printf("%s\n","hello world"); - }; +struct Base { + int v1; + // private: //error! + int v3; + +public: // 显示声明public + int v2; + void print() { printf("%s\n", "hello world"); }; }; int main() { - struct Base base1; //ok - Base base2; //ok - Base base; - base.v1=1; - base.v3=2; - base.print(); - printf("%d\n",base.v1); - printf("%d\n",base.v3); - return 0; + struct Base base1; // ok + Base base2; // ok + Base base; + base.v1 = 1; + base.v3 = 2; + base.print(); + printf("%d\n", base.v1); + printf("%d\n", base.v3); + return 0; } diff --git a/basic_content/struct/struct_func_func.cpp b/basic_content/struct/struct_func_func.cpp index bce37499..5ca9e88f 100644 --- a/basic_content/struct/struct_func_func.cpp +++ b/basic_content/struct/struct_func_func.cpp @@ -1,39 +1,35 @@ -#include -#include +#include +#include -struct Base { - int v1; -// private: //error! - int v3; - public: //显示声明public - int v2; - void print(){ - printf("%s\n","hello world"); - }; +struct Base { + int v1; + // private: //error! + int v3; + +public: // 显示声明public + int v2; + void print() { printf("%s\n", "hello world"); }; }; -typedef struct Base1 { - int v1; -// private: //error! - int v3; - public: //显示声明public - int v2; - void print(){ - printf("%s\n","hello world"); - }; -}B; -void Base(){ - printf("%s\n","I am Base func"); -} -//void B() {} //error! 符号 "B" 已经被定义为一个 "struct Base1" 的别名 +typedef struct Base1 { + int v1; + // private: //error! + int v3; + +public: // 显示声明public + int v2; + void print() { printf("%s\n", "hello world"); }; +} B; +void Base() { printf("%s\n", "I am Base func"); } +// void B() {} //error! 符号 "B" 已经被定义为一个 "struct Base1" 的别名 int main() { - struct Base base; //ok - //Base base1; // error! - base.v1=1; - base.v3=2; - base.print(); - printf("%d\n",base.v1); - printf("%d\n",base.v3); - Base(); - return 0; + struct Base base; // ok + // Base base1; // error! + base.v1 = 1; + base.v3 = 2; + base.print(); + printf("%d\n", base.v1); + printf("%d\n", base.v3); + Base(); + return 0; } diff --git a/basic_content/this/BUILD b/basic_content/this/BUILD new file mode 100644 index 00000000..677f822c --- /dev/null +++ b/basic_content/this/BUILD @@ -0,0 +1,8 @@ +# please run `bazel run basic_content/this:person` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "person", + srcs = ["person.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/this/person b/basic_content/this/person deleted file mode 100755 index 99a540ec8aaedaff282930946a1ea2071cc4a95a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33952 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 diff --git a/basic_content/this/person.cpp b/basic_content/this/person.cpp index 613dab95..512c0ccf 100644 --- a/basic_content/this/person.cpp +++ b/basic_content/this/person.cpp @@ -1,41 +1,32 @@ -#include -#include - +#include +#include using namespace std; -class Person{ +class Person { public: - typedef enum { - BOY = 0, - GIRL - }SexType; - Person(char *n, int a,SexType s){ - name=new char[strlen(n)+1]; - strcpy(name,n); - age=a; - sex=s; - } - int get_age() const{ - - return this->age; - } - Person& add_age(int a){ - age+=a; - return *this; - } - ~Person(){ - delete [] name; - } + typedef enum { BOY = 0, GIRL } SexType; + Person(char *n, int a, SexType s) { + name = new char[strlen(n) + 1]; + strcpy(name, n); + age = a; + sex = s; + } + int get_age() const { return this->age; } + Person &add_age(int a) { + age += a; + return *this; + } + ~Person() { delete[] name; } + private: - char * name; - int age; - SexType sex; + char *name; + int age; + SexType sex; }; +int main() { + Person p("zhangsan", 20, Person::BOY); + cout << p.get_age() << endl; -int main(){ - Person p("zhangsan",20,Person::BOY); - cout<6ZoOH=3|u&OIbf?ah;46;1y8<)+A7 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 +#include /** * 默认访问控制符为public */ union UnionTest { - /** - * 可以含有构造函数、析构函数 - */ - UnionTest() : i(10) {print(i);}; - ~UnionTest(){}; - int i; + /** + * 可以含有构造函数、析构函数 + */ + UnionTest() : i(10) { print(i); }; + ~UnionTest(){}; + int i; + private: - void print(int i){std::cout<S~uJksI0=DUjz;Sj=p!AQ_&=q05 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 using namespace std; -class Base{ - public: - void f(){ cout<<"f()"<+(q@SZjFG-Lwv%{s?96^H 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 #define isNs1 1 -//#define isGlobal 2 +// #define isGlobal 2 using namespace std; -void func() -{ - cout<<"::func"<$2Dn7ptW{o{#oTL|f_yO|3QWx6j$< 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 Sx$0lXFGzfqoZFV1_5VK+_sQ1) diff --git a/basic_content/using/using_typedef.cpp b/basic_content/using/using_typedef.cpp index 58071227..3616f1c9 100644 --- a/basic_content/using/using_typedef.cpp +++ b/basic_content/using/using_typedef.cpp @@ -1,6 +1,6 @@ /** * @file using_typedef.cpp - * @brief g++ -o using_typedef using_typedef.cpp -std=c++11 + * @brief bazel run basic_content/using:using_typedef * 取代typedef,使用using来定义别名 * @author 光城 * @version v1 @@ -14,21 +14,19 @@ using namespace std; typedef vector V1; using V2 = vector; +int main() { + int nums1[] = {1, 2, 3, 4, 5, 6}; + V1 vec1(nums1, nums1 + sizeof(nums1) / sizeof(int)); + int nums2[] = {5, 7, 6}; + V2 vec2(nums2, nums2 + sizeof(nums2) / sizeof(int)); -int main() -{ - int nums1[] = {1,2,3,4,5,6}; - V1 vec1(nums1,nums1+sizeof(nums1)/sizeof(int)); - int nums2[] = {5,7,6}; - V2 vec2(nums2,nums2+sizeof(nums2)/sizeof(int)); - - for(auto i:vec1) - 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

~~bC(%AqPQcOLZGjZLb7%$ zAp*n=#PS0okT{xwJ&T$-t7SNu%VQy|U<|b7lIa*JsM=846ajgi1E>a$WWgfm6yLO9 zLnteU7f24MC3+wMBg|Q<)>>_8aQ%qROX$AWM_Kvv!Nw+2iCKb>mx$^!Q@2@FX972VD1F$~tbI|W$Dw7l(6xwg2 zD(my_mHUC=r(Q{)_d{d`C~)47Lsb@Kj#=>_YP1)|{qw%bR<*&mT}k5Si7YI~^dX?M zx5m7-RFiU=(vM2c@}Febe+3JAAEubH{z;{O(xK1&vp$dixYBQCgUd9lrZx!AE1dL6 z$Ep8iU=$P8U1?wEywc}=Qi#YxzS>I>j9tI9|D!rOX%|MF-;bDn&7sfxL?@L#`^#pW z{L>D7ejj~734Wg@hplkG4E;4KcK`W3F`+h?`8|^5o#TH_>GSpD_p~9U{{|~6>h%A6 z4t?Io;=jM4_}GiH|I=tB|G9tO?>etG#2@7bWyIP4Pl0>!;V|+30{=aZGhR-8%IaNh z)93xO+N}UlobpcoB4o&a?w|Lmd>>Q)SJ0)o%lf>Z%zrO+fsCW@{O107T$5 +#include using namespace std; +class Employee { +public: + virtual void raiseSalary() { cout << 0 << endl; } -class Employee -{ - public: - virtual void raiseSalary() - { - cout<<0<raiseSalary(); // Polymorphic Call: Calls raiseSalary() - // according to the actual object, not - // according to the type of pointer -} -int main(){ - Employee *emp[]={new Manager(),new Engineer}; - globalRaiseSalary(emp,2); - return 0; +// Similarly, there may be other types of employees +// We need a very simple function to increment salary of all employees +// Note that emp[] is an array of pointers and actual pointed objects can +// be any type of employees. This function should ideally be in a class +// like Organization, we have made it global to keep things simple +void globalRaiseSalary(Employee *emp[], int n) { + for (int i = 0; i < n; i++) + emp[i]->raiseSalary(); // Polymorphic Call: Calls raiseSalary() + // according to the actual object, not + // according to the type of pointer +} +int main() { + Employee *emp[] = {new Manager(), new Engineer}; + globalRaiseSalary(emp, 2); + return 0; } diff --git a/basic_content/virtual/set2/BUILD b/basic_content/virtual/set2/BUILD new file mode 100644 index 00000000..bf1816b4 --- /dev/null +++ b/basic_content/virtual/set2/BUILD @@ -0,0 +1,8 @@ +# please run `bazel run basic_content/virtual/set2:default_arg` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "default_arg", + srcs = ["default_arg.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/virtual/set2/default_arg.cpp b/basic_content/virtual/set2/default_arg.cpp index 47978189..3697b930 100644 --- a/basic_content/virtual/set2/default_arg.cpp +++ b/basic_content/virtual/set2/default_arg.cpp @@ -7,33 +7,22 @@ * @date 2019-07-24 */ -#include -using namespace std; +#include +using namespace std; -class Base -{ - public: - virtual void fun ( int x = 10 ) - { - cout << "Base::fun(), x = " << x << endl; - } -}; +class Base { +public: + virtual void fun(int x = 10) { cout << "Base::fun(), x = " << x << endl; } +}; -class Derived : public Base -{ - public: - virtual void fun ( int x=20 ) - { - cout << "Derived::fun(), x = " << x << endl; - } -}; - - -int main() -{ - Derived d1; - Base *bp = &d1; - bp->fun(); // 10 - return 0; -} +class Derived : public Base { +public: + virtual void fun(int x = 20) { cout << "Derived::fun(), x = " << x << endl; } +}; +int main() { + Derived d1; + Base *bp = &d1; + bp->fun(); // 10 + return 0; +} diff --git a/basic_content/virtual/set3/BUILD b/basic_content/virtual/set3/BUILD new file mode 100644 index 00000000..23cefd3a --- /dev/null +++ b/basic_content/virtual/set3/BUILD @@ -0,0 +1,57 @@ +# please run `bazel run //basic_content/virtual/set3:copy_consrtuct` +# please run `bazel run //basic_content/virtual/set3:full_virde` +# please run `bazel run //basic_content/virtual/set3:inline_virtual` +# please run `bazel run //basic_content/virtual/set3:vir_con` +# please run `bazel run //basic_content/virtual/set3:vir_de` +# please run `bazel run //basic_content/virtual/set3:virtual_function` +# please run `bazel run //basic_content/virtual/set3:virtual_function1` +# please run `bazel run //basic_content/virtual/set3:virtual_inline` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "copy_consrtuct", + srcs = ["copy_consrtuct.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "full_virde", + srcs = ["full_virde.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "inline_virtual", + srcs = ["inline_virtual.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "vir_con", + srcs = ["vir_con.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "vir_de", + srcs = ["vir_de.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "virtual_function", + srcs = ["virtual_function.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "virtual_function1", + srcs = ["virtual_function1.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "virtual_inline", + srcs = ["virtual_inline.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/virtual/set3/copy_consrtuct.cpp b/basic_content/virtual/set3/copy_consrtuct.cpp index e65ca897..c2481d6e 100644 --- a/basic_content/virtual/set3/copy_consrtuct.cpp +++ b/basic_content/virtual/set3/copy_consrtuct.cpp @@ -1,41 +1,29 @@ -#include -using namespace std; +#include +using namespace std; -class Base -{ - public: +class Base { +public: +}; -}; +class Derived : public Base { +public: + Derived() { cout << "Derived created" << endl; } -class Derived : public Base -{ - public: - Derived() - { - cout << "Derived created" << endl; - } + Derived(const Derived &rhs) { + cout << "Derived created by deep copy" << endl; + } - Derived(const Derived &rhs) - { - cout << "Derived created by deep copy" << endl; - } + ~Derived() { cout << "Derived destroyed" << endl; } +}; - ~Derived() - { - cout << "Derived destroyed" << endl; - } -}; +int main() { + Derived s1; -int main() -{ - Derived s1; + Derived s2 = s1; // Compiler invokes "copy constructor" + // Type of s1 and s2 are concrete to compiler - Derived s2 = s1; // Compiler invokes "copy constructor" - // Type of s1 and s2 are concrete to compiler - - // How can we create Derived1 or Derived2 object - // from pointer (reference) to Base class pointing Derived object? - - return 0; -} + // How can we create Derived1 or Derived2 object + // from pointer (reference) to Base class pointing Derived object? + return 0; +} diff --git a/basic_content/virtual/set3/full_virde.cpp b/basic_content/virtual/set3/full_virde.cpp index d4ef7a8a..f4f20e50 100644 --- a/basic_content/virtual/set3/full_virde.cpp +++ b/basic_content/virtual/set3/full_virde.cpp @@ -10,30 +10,25 @@ * @version v1 * @date 2019-07-24 */ -#include +#include -using namespace std; +using namespace std; -class base { - public: - base() - { cout<<"Constructing base \n"; } - virtual ~base() - { cout<<"Destructing base \n"; } -}; +class base { +public: + base() { cout << "Constructing base \n"; } + virtual ~base() { cout << "Destructing base \n"; } +}; -class derived: public base { - public: - derived() - { cout<<"Constructing derived \n"; } - ~derived() - { cout<<"Destructing derived \n"; } -}; +class derived : public base { +public: + derived() { cout << "Constructing derived \n"; } + ~derived() { cout << "Destructing derived \n"; } +}; -int main(void) -{ - derived *d = new derived(); - base *b = d; - delete b; - return 0; -} +int main(void) { + derived *d = new derived(); + base *b = d; + delete b; + return 0; +} diff --git a/basic_content/virtual/set3/inline_virtual.cpp b/basic_content/virtual/set3/inline_virtual.cpp index 1ec1a065..be87fccf 100644 --- a/basic_content/virtual/set3/inline_virtual.cpp +++ b/basic_content/virtual/set3/inline_virtual.cpp @@ -1,35 +1,31 @@ -#include +#include using namespace std; -class Base -{ - public: - inline virtual void who() - { - cout << "I am Base\n"; - } - virtual ~Base() {} +class Base { +public: + inline virtual void who() { cout << "I am Base\n"; } + virtual ~Base() {} }; -class Derived : public Base -{ - public: - inline void who() // 不写inline时隐式内联 - { - cout << "I am Derived\n"; - } +class Derived : public Base { +public: + inline void who() // 不写inline时隐式内联 + { + cout << "I am Derived\n"; + } }; -int main() -{ - // 此处的虚函数 who(),是通过类(Base)的具体对象(b)来调用的,编译期间就能确定了,所以它可以是内联的,但最终是否内联取决于编译器。 - Base b; - b.who(); +int main() { + // 此处的虚函数 + // who(),是通过类(Base)的具体对象(b)来调用的,编译期间就能确定了,所以它可以是内联的,但最终是否内联取决于编译器。 + Base b; + b.who(); - // 此处的虚函数是通过指针调用的,呈现多态性,需要在运行时期间才能确定,所以不能为内联。 - Base *ptr = new Derived(); - ptr->who(); + // 此处的虚函数是通过指针调用的,呈现多态性,需要在运行时期间才能确定,所以不能为内联。 + Base *ptr = new Derived(); + ptr->who(); - // 因为Base有虚析构函数(virtual ~Base() {}),所以 delete 时,会先调用派生类(Derived)析构函数,再调用基类(Base)析构函数,防止内存泄漏。 - delete ptr; + // 因为Base有虚析构函数(virtual ~Base() {}),所以 delete + // 时,会先调用派生类(Derived)析构函数,再调用基类(Base)析构函数,防止内存泄漏。 + delete ptr; - return 0; -} + return 0; +} diff --git a/basic_content/virtual/set3/static_error.cpp b/basic_content/virtual/set3/static_error.cpp index 5a79667c..32f49664 100644 --- a/basic_content/virtual/set3/static_error.cpp +++ b/basic_content/virtual/set3/static_error.cpp @@ -9,5 +9,5 @@ * @date 2019-07-24 */ -virtual static void fun() { } -static void fun() const { } +virtual static void fun() {} +static void fun() const {} diff --git a/basic_content/virtual/set3/vir_con.cpp b/basic_content/virtual/set3/vir_con.cpp index 78c4a07f..c40ee1ee 100644 --- a/basic_content/virtual/set3/vir_con.cpp +++ b/basic_content/virtual/set3/vir_con.cpp @@ -1,206 +1,158 @@ /** * @file vir_con.cpp - * @brief 构造函数不可以声明为虚函数。同时除了inline之外,构造函数不允许使用其它任何关键字。 + * @brief + * 构造函数不可以声明为虚函数。同时除了inline之外,构造函数不允许使用其它任何关键字。 * * 为什么构造函数不可以为虚函数? * - * 尽管虚函数表vtable是在编译阶段就已经建立的,但指向虚函数表的指针vptr是在运行阶段实例化对象时才产生的。 如果类含有虚函数,编译器会在构造函数中添加代码来创建vptr。 问题来了,如果构造函数是虚的,那么它需要vptr来访问vtable,可这个时候vptr还没产生。 因此,构造函数不可以为虚函数。 + * 尽管虚函数表vtable是在编译阶段就已经建立的,但指向虚函数表的指针vptr是在运行阶段实例化对象时才产生的。 + * 如果类含有虚函数,编译器会在构造函数中添加代码来创建vptr。 + * 问题来了,如果构造函数是虚的,那么它需要vptr来访问vtable,可这个时候vptr还没产生。 + * 因此,构造函数不可以为虚函数。 * 我们之所以使用虚函数,是因为需要在信息不全的情况下进行多态运行。而构造函数是用来初始化实例的,实例的类型必须是明确的。 * 因此,构造函数没有必要被声明为虚函数。 - * 尽管构造函数不可以为虚函数,但是有些场景下我们确实需要 “Virtual Copy Constructor”。 “虚复制构造函数”的说法并不严谨,其只是一个实现了对象复制的功能的类内函数。 举一个应用场景,比如剪切板功能。 复制内容作为基类,但派生类可能包含文字、图片、视频等等。 我们只有在程序运行的时候才知道我们需要复制的具体是什么类型的数据。 + * 尽管构造函数不可以为虚函数,但是有些场景下我们确实需要 “Virtual Copy + * Constructor”。 + * “虚复制构造函数”的说法并不严谨,其只是一个实现了对象复制的功能的类内函数。 + * 举一个应用场景,比如剪切板功能。 + * 复制内容作为基类,但派生类可能包含文字、图片、视频等等。 + * 我们只有在程序运行的时候才知道我们需要复制的具体是什么类型的数据。 * * @author 光城 * @version v1 * @date 2019-07-24 */ -#include -using namespace std; - -//// LIBRARY SRART -class Base -{ - public: - Base() { } - - virtual // Ensures to invoke actual object destructor - ~Base() { } - - virtual void ChangeAttributes() = 0; - - // The "Virtual Constructor" - static Base *Create(int id); - - // The "Virtual Copy Constructor" - virtual Base *Clone() = 0; -}; - -class Derived1 : public Base -{ - public: - Derived1() - { - cout << "Derived1 created" << endl; - } - - Derived1(const Derived1& rhs) - { - cout << "Derived1 created by deep copy" << endl; - } - - ~Derived1() - { - cout << "~Derived1 destroyed" << endl; - } - - void ChangeAttributes() - { - cout << "Derived1 Attributes Changed" << endl; - } - - Base *Clone() - { - return new Derived1(*this); - } -}; - -class Derived2 : public Base -{ - public: - Derived2() - { - cout << "Derived2 created" << endl; - } - - Derived2(const Derived2& rhs) - { - cout << "Derived2 created by deep copy" << endl; - } - - ~Derived2() - { - cout << "~Derived2 destroyed" << endl; - } - - void ChangeAttributes() - { - cout << "Derived2 Attributes Changed" << endl; - } - - Base *Clone() - { - return new Derived2(*this); - } -}; - -class Derived3 : public Base -{ - public: - Derived3() - { - cout << "Derived3 created" << endl; - } - - Derived3(const Derived3& rhs) - { - cout << "Derived3 created by deep copy" << endl; - } - - ~Derived3() - { - cout << "~Derived3 destroyed" << endl; - } - - void ChangeAttributes() - { - cout << "Derived3 Attributes Changed" << endl; - } - - Base *Clone() - { - return new Derived3(*this); - } -}; - -// We can also declare "Create" outside Base. -// But is more relevant to limit it's scope to Base -Base *Base::Create(int id) -{ - // Just expand the if-else ladder, if new Derived class is created - // User need not be recompiled to create newly added class objects - - if( id == 1 ) - { - return new Derived1; - } - else if( id == 2 ) - { - return new Derived2; - } - else - { - return new Derived3; - } -} -//// LIBRARY END - -//// UTILITY SRART -class User -{ - public: - User() : pBase(0) - { - // Creates any object of Base heirarchey at runtime - - int input; - - cout << "Enter ID (1, 2 or 3): "; - cin >> input; - - while( (input != 1) && (input != 2) && (input != 3) ) - { - cout << "Enter ID (1, 2 or 3 only): "; - cin >> input; - } - - // Create objects via the "Virtual Constructor" - pBase = Base::Create(input); - } - - ~User() - { - if( pBase ) - { - delete pBase; - pBase = 0; - } - } - - void Action() - { - // Duplicate current object - Base *pNewBase = pBase->Clone(); - - // Change its attributes - pNewBase->ChangeAttributes(); - - // Dispose the created object - delete pNewBase; - } - - private: - Base *pBase; -}; - -//// UTILITY END - -//// Consumer of User (UTILITY) class -int main() -{ - User *user = new User(); - - user->Action(); - - delete user; -} +#include +using namespace std; +//// LIBRARY SRART +class Base { +public: + Base() {} + + virtual // Ensures to invoke actual object destructor + ~Base() {} + + virtual void ChangeAttributes() = 0; + + // The "Virtual Constructor" + static Base *Create(int id); + + // The "Virtual Copy Constructor" + virtual Base *Clone() = 0; +}; + +class Derived1 : public Base { +public: + Derived1() { cout << "Derived1 created" << endl; } + + Derived1(const Derived1 &rhs) { + cout << "Derived1 created by deep copy" << endl; + } + + ~Derived1() { cout << "~Derived1 destroyed" << endl; } + + void ChangeAttributes() { cout << "Derived1 Attributes Changed" << endl; } + + Base *Clone() { return new Derived1(*this); } +}; + +class Derived2 : public Base { +public: + Derived2() { cout << "Derived2 created" << endl; } + + Derived2(const Derived2 &rhs) { + cout << "Derived2 created by deep copy" << endl; + } + + ~Derived2() { cout << "~Derived2 destroyed" << endl; } + + void ChangeAttributes() { cout << "Derived2 Attributes Changed" << endl; } + + Base *Clone() { return new Derived2(*this); } +}; + +class Derived3 : public Base { +public: + Derived3() { cout << "Derived3 created" << endl; } + + Derived3(const Derived3 &rhs) { + cout << "Derived3 created by deep copy" << endl; + } + + ~Derived3() { cout << "~Derived3 destroyed" << endl; } + + void ChangeAttributes() { cout << "Derived3 Attributes Changed" << endl; } + + Base *Clone() { return new Derived3(*this); } +}; + +// We can also declare "Create" outside Base. +// But is more relevant to limit it's scope to Base +Base *Base::Create(int id) { + // Just expand the if-else ladder, if new Derived class is created + // User need not be recompiled to create newly added class objects + + if (id == 1) { + return new Derived1; + } else if (id == 2) { + return new Derived2; + } else { + return new Derived3; + } +} +//// LIBRARY END + +//// UTILITY SRART +class User { +public: + User() : pBase(0) { + // Creates any object of Base heirarchey at runtime + + int input; + + cout << "Enter ID (1, 2 or 3): "; + cin >> input; + + while ((input != 1) && (input != 2) && (input != 3)) { + cout << "Enter ID (1, 2 or 3 only): "; + cin >> input; + } + + // Create objects via the "Virtual Constructor" + pBase = Base::Create(input); + } + + ~User() { + if (pBase) { + delete pBase; + pBase = 0; + } + } + + void Action() { + // Duplicate current object + Base *pNewBase = pBase->Clone(); + + // Change its attributes + pNewBase->ChangeAttributes(); + + // Dispose the created object + delete pNewBase; + } + +private: + Base *pBase; +}; + +//// UTILITY END + +//// Consumer of User (UTILITY) class +int main() { + User *user = new User(); + + user->Action(); + + delete user; +} diff --git a/basic_content/virtual/set3/vir_de.cpp b/basic_content/virtual/set3/vir_de.cpp index 79c7c656..ae8fbd47 100644 --- a/basic_content/virtual/set3/vir_de.cpp +++ b/basic_content/virtual/set3/vir_de.cpp @@ -10,32 +10,27 @@ * @date 2019-07-24 */ -// CPP program without virtual destructor -// causing undefined behavior -#include +// CPP program without virtual destructor +// causing undefined behavior +#include -using namespace std; +using namespace std; -class base { - public: - base() - { cout<<"Constructing base \n"; } - ~base() - { cout<<"Destructing base \n"; } -}; +class base { +public: + base() { cout << "Constructing base \n"; } + ~base() { cout << "Destructing base \n"; } +}; -class derived: public base { - public: - derived() - { cout<<"Constructing derived \n"; } - ~derived() - { cout<<"Destructing derived \n"; } -}; +class derived : public base { +public: + derived() { cout << "Constructing derived \n"; } + ~derived() { cout << "Destructing derived \n"; } +}; -int main(void) -{ - derived *d = new derived(); - base *b = d; - delete b; - return 0; -} +int main(void) { + derived *d = new derived(); + base *b = d; + delete b; + return 0; +} diff --git a/basic_content/virtual/set3/virtual_function.cpp b/basic_content/virtual/set3/virtual_function.cpp index 1b6d039a..1c98adaa 100644 --- a/basic_content/virtual/set3/virtual_function.cpp +++ b/basic_content/virtual/set3/virtual_function.cpp @@ -2,32 +2,32 @@ * @file virtual_function.cpp * @brief 虚函数可以被私有化,但有一些细节需要注意。 * 基类指针指向继承类对象,则调用继承类对象的函数; - * int main()必须声明为Base类的友元,否则编译失败。 编译器报错: ptr无法访问私有函数。 - * 当然,把基类声明为public, 继承类为private,该问题就不存在了。----> 见另外一个例子! + * int main()必须声明为Base类的友元,否则编译失败。 编译器报错: + * ptr无法访问私有函数。 当然,把基类声明为public, + * 继承类为private,该问题就不存在了。----> 见另外一个例子! * @author 光城 * @version v1 * @date 2019-07-24 */ -#include -using namespace std; +#include +using namespace std; -class Derived; +class Derived; -class Base { - private: - virtual void fun() { cout << "Base Fun"; } - friend int main(); -}; +class Base { +private: + virtual void fun() { cout << "Base Fun"; } + friend int main(); +}; -class Derived: public Base { - public: - void fun() { cout << "Derived Fun"; } -}; +class Derived : public Base { +public: + void fun() { cout << "Derived Fun"; } +}; -int main() -{ - Base *ptr = new Derived; - ptr->fun(); - return 0; +int main() { + Base *ptr = new Derived; + ptr->fun(); + return 0; } diff --git a/basic_content/virtual/set3/virtual_function1.cpp b/basic_content/virtual/set3/virtual_function1.cpp index 27648e11..f893b649 100644 --- a/basic_content/virtual/set3/virtual_function1.cpp +++ b/basic_content/virtual/set3/virtual_function1.cpp @@ -1,22 +1,21 @@ -#include -using namespace std; +#include +using namespace std; -class Derived; +class Derived; -class Base { - public: - virtual void fun() { cout << "Base Fun"; } - // friend int main(); -}; +class Base { +public: + virtual void fun() { cout << "Base Fun"; } + // friend int main(); +}; -class Derived: public Base { - private: - void fun() { cout << "Derived Fun"; } -}; +class Derived : public Base { +private: + void fun() { cout << "Derived Fun"; } +}; -int main() -{ - Base *ptr = new Derived; - ptr->fun(); - return 0; +int main() { + Base *ptr = new Derived; + ptr->fun(); + return 0; } diff --git a/basic_content/virtual/set3/virtual_inline.cpp b/basic_content/virtual/set3/virtual_inline.cpp index ac899647..ed21a628 100644 --- a/basic_content/virtual/set3/virtual_inline.cpp +++ b/basic_content/virtual/set3/virtual_inline.cpp @@ -1,6 +1,6 @@ /** * @file virtual_inline.cpp - * @brief 通常类成员函数都会被编译器考虑是否进行内联。 + * @brief 通常类成员函数都会被编译器考虑是否进行内联。 * 但通过基类指针或者引用调用的虚函数必定不能被内联。 * 当然,实体对象调用虚函数或者静态调用时可以被内联,虚析构函数的静态调用也一定会被内联展开。 * @author 光城 @@ -8,37 +8,28 @@ * @date 2019-07-24 */ -#include -using namespace std; -class Base -{ - public: - virtual void who() - { - cout << "I am Base\n"; - } -}; -class Derived: public Base -{ - public: - void who() - { - cout << "I am Derived\n"; - } -}; +#include +using namespace std; +class Base { +public: + virtual void who() { cout << "I am Base\n"; } +}; +class Derived : public Base { +public: + void who() { cout << "I am Derived\n"; } +}; -int main() -{ - // note here virtual function who() is called through - // object of the class (it will be resolved at compile - // time) so it can be inlined. - Base b; - b.who(); +int main() { + // note here virtual function who() is called through + // object of the class (it will be resolved at compile + // time) so it can be inlined. + Base b; + b.who(); - // Here virtual function is called through pointer, - // so it cannot be inlined - Base *ptr = new Derived(); - ptr->who(); + // Here virtual function is called through pointer, + // so it cannot be inlined + Base *ptr = new Derived(); + ptr->who(); - return 0; -} + return 0; +} diff --git a/basic_content/virtual/set4/BUILD b/basic_content/virtual/set4/BUILD new file mode 100644 index 00000000..c3d29f50 --- /dev/null +++ b/basic_content/virtual/set4/BUILD @@ -0,0 +1,8 @@ +# please run `bazel run basic_content/virtual/set4:rtti` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "rtti", + srcs = ["rtti.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/virtual/set4/rtti b/basic_content/virtual/set4/rtti deleted file mode 100755 index c7cb891947c159533e2642f0e4a220670dcf1fcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14944 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 Nc;HR8SZ~FO{{~3pA-Mnm diff --git a/basic_content/virtual/set4/rtti.cpp b/basic_content/virtual/set4/rtti.cpp index 649687e3..f4198038 100644 --- a/basic_content/virtual/set4/rtti.cpp +++ b/basic_content/virtual/set4/rtti.cpp @@ -1,34 +1,38 @@ /** * @file rtti.cpp - * @brief 在面向对象程序设计中,有时我们需要在运行时查询一个对象是否能作为某种多态类型使用。与Java的instanceof,以及C#的as、is运算符类似,C++提供了dynamic_cast函数用于动态转型。相比C风格的强制类型转换和C++ reinterpret_cast,dynamic_cast提供了类型安全检查,是一种基于能力查询(Capability Query)的转换,所以在多态类型间进行转换更提倡采用dynamic_cast + * @brief + * 在面向对象程序设计中,有时我们需要在运行时查询一个对象是否能作为某种多态类型使用。与Java的instanceof,以及C#的as、is运算符类似,C++提供了dynamic_cast函数用于动态转型。相比C风格的强制类型转换和C++ + * reinterpret_cast,dynamic_cast提供了类型安全检查,是一种基于能力查询(Capability + * Query)的转换,所以在多态类型间进行转换更提倡采用dynamic_cast * @author 光城 * @version v1 * @date 2019-07-24 */ -// CPP program to illustrate -// // Run Time Type Identification -#include -#include -using namespace std; -class B { virtual void fun() {} }; -class D: public B { }; +// CPP program to illustrate +// Run Time Type Identification +#include +#include +using namespace std; +class B { + virtual void fun() {} +}; +class D : public B {}; -int main() -{ - B *b = new D; // 向上转型 - B &obj = *b; - D *d = dynamic_cast(b); // 向下转型 - if(d != NULL) - cout << "works"<(obj); - cout << "works"<(b); // 向下转型 + if (d != NULL) + cout << "works" << endl; + else + cout << "cannot cast B* to D*"; + + try { + D &dobj = dynamic_cast(obj); + cout << "works" << endl; + } catch (bad_cast bc) { // ERROR + cout << bc.what() << endl; + } + return 0; } diff --git a/basic_content/virtual/set4/warn_rtti.cpp b/basic_content/virtual/set4/warn_rtti.cpp index 986879db..4e027abc 100644 --- a/basic_content/virtual/set4/warn_rtti.cpp +++ b/basic_content/virtual/set4/warn_rtti.cpp @@ -1,35 +1,25 @@ // 在使用时需要注意:被转换对象obj的类型T1必须是多态类型,即T1必须公有继承自其它类,或者T1拥有虚函数(继承或自定义)。若T1为非多态类型,使用dynamic_cast会报编译错误。 -// A为非多态类型 +// A为非多态类型 -class A{ +class A {}; -}; - -//B为多态类型 - -class B{ - - public: virtual ~B(){} - -}; - -//D为非多态类型 +// B为多态类型 -class D: public A{ +class B { +public: + virtual ~B() {} }; -//E为非多态类型 - -class E : private A{ - -}; +// D为非多态类型 -//F为多态类型 +class D : public A {}; -class F : private B{ +// E为非多态类型 -} +class E : private A {}; +// F为多态类型 +class F : private B {} diff --git a/basic_content/volatile/BUILD b/basic_content/volatile/BUILD new file mode 100644 index 00000000..4aa0ef6f --- /dev/null +++ b/basic_content/volatile/BUILD @@ -0,0 +1,15 @@ +# please run `bazel run basic_content/volatile:noopt_vola` +# please run `bazel run basic_content/volatile:volatile` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "noopt_vola", + srcs = ["noopt_vola.cpp"], + copts = ["-std=c++11"] +) + +cc_binary( + name = "volatile", + srcs = ["volatile.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/volatile/README.md b/basic_content/volatile/README.md index 06cf454e..25221cd8 100644 --- a/basic_content/volatile/README.md +++ b/basic_content/volatile/README.md @@ -80,7 +80,7 @@ void threadFunc2() 可以。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。 (2)一个指针可以是volatile吗?为什么? -可以。尽管这并不常见。一个例子是当一个中断服务子程序修该一个指向一个buffer的指针时。 +可以。尽管这并不常见。一个例子是当一个中断服务子程序修改一个指向一个buffer的指针时。 (3)下面的函数有什么错误? ```c++ diff --git a/basic_content/volatile/noopt_vola.cpp b/basic_content/volatile/noopt_vola.cpp index 58ceae6f..ebd860a6 100644 --- a/basic_content/volatile/noopt_vola.cpp +++ b/basic_content/volatile/noopt_vola.cpp @@ -1,15 +1,14 @@ /* Compile code without optimization option */ -#include -int main(void) -{ - const int local = 10; - int *ptr = (int*) &local; +#include +int main(void) { + const int local = 10; + int *ptr = (int *)&local; - printf("Initial value of local : %d \n", local); + printf("Initial value of local : %d \n", local); - *ptr = 100; + *ptr = 100; - printf("Modified value of local: %d \n", local); + printf("Modified value of local: %d \n", local); - return 0; -} + return 0; +} diff --git a/basic_content/volatile/nv b/basic_content/volatile/nv deleted file mode 100755 index b5eb220e6d350b522a09a8eefe268b6282a9a874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8672 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 +#include -int main(void) -{ - const volatile int local = 10; - int *ptr = (int*) &local; +int main(void) { + const volatile int local = 10; + int *ptr = (int *)&local; - printf("Initial value of local : %d \n", local); + printf("Initial value of local : %d \n", local); - *ptr = 100; + *ptr = 100; - printf("Modified value of local: %d \n", local); + printf("Modified value of local: %d \n", local); - return 0; -} + return 0; +} diff --git a/basic_content/vptr_vtable/BUILD b/basic_content/vptr_vtable/BUILD new file mode 100644 index 00000000..60ebb930 --- /dev/null +++ b/basic_content/vptr_vtable/BUILD @@ -0,0 +1,8 @@ +# please run `bazel run basic_content/vptr_vtable:vptr1` +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "vptr1", + srcs = ["vptr1.cpp"], + copts = ["-std=c++11"] +) \ No newline at end of file diff --git a/basic_content/vptr_vtable/vptr1.cpp b/basic_content/vptr_vtable/vptr1.cpp index a8f339ef..076bde7b 100644 --- a/basic_content/vptr_vtable/vptr1.cpp +++ b/basic_content/vptr_vtable/vptr1.cpp @@ -1,12 +1,3 @@ -/** - * @file vptr1.cpp - * @brief C++虚函数vptr和vtable - * 编译:g++ -g -o vptr vptr1.cpp -std=c++11 - * @author 光城 - * @version v1 - * @date 2019-07-20 - */ - #include #include using namespace std; @@ -16,90 +7,75 @@ using namespace std; */ typedef void (*Fun)(); - /** * @brief 基类 */ -class Base -{ - public: - Base(){}; - virtual void fun1() - { - cout << "Base::fun1()" << endl; - } - virtual void fun2() - { - cout << "Base::fun2()" << endl; - } - virtual void fun3(){} - ~Base(){}; +class Base { +public: + Base(){}; + virtual void fun1() { cout << "Base::fun1()" << endl; } + virtual void fun2() { cout << "Base::fun2()" << endl; } + virtual void fun3() {} + ~Base(){}; }; - /** * @brief 派生类 */ -class Derived: public Base -{ - public: - Derived(){}; - void fun1() - { - cout << "Derived::fun1()" << endl; - } - void fun2() - { - cout << "DerivedClass::fun2()" << endl; - } - ~Derived(){}; +class Derived : public Base { +public: + Derived(){}; + void fun1() { cout << "Derived::fun1()" << endl; } + void fun2() { cout << "DerivedClass::fun2()" << endl; } + ~Derived(){}; }; /** - * @brief 获取vptr地址与func地址,vptr指向的是一块内存,这块内存存放的是虚函数地址,这块内存就是我们所说的虚表 + * @brief + * 获取vptr地址与func地址,vptr指向的是一块内存,这块内存存放的是虚函数地址,这块内存就是我们所说的虚表 * * @param obj * @param offset * - * @return + * @return */ -Fun getAddr(void* obj,unsigned int offset) -{ - cout<<"======================="<fun1(); - cout<<"基类引用指向派生类实例并调用虚函数"<fun1(); + cout << "基类引用指向派生类实例并调用虚函数" << endl; + p.fun1(); - // 手动查找vptr 和 vtable - Fun f1 = getAddr(pt, 0); - (*f1)(); - Fun f2 = getAddr(pt, 1); - (*f2)(); + // 手动查找vptr 和 vtable + Fun f1 = getAddr(pt, 0); + (*f1)(); + Fun f2 = getAddr(pt, 1); + (*f2)(); - delete pt; - return 0; + delete pt; + return 0; } diff --git a/c++2.0/c++11/README.md b/c++2.0/c++11/README.md deleted file mode 100644 index 27b9e958..00000000 --- a/c++2.0/c++11/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# C++新特性 - -## 1.[C++11新特性](./c++2.0/c++11) - -- [Variadic Templates](./c++2.0/variadic) - -- Spaces in Template Expressions - - ```cpp - vector > //ok in each C++ version - vector> // before c++ 11 error error: ‘>>’ should be ‘> >’ within a nested template argument list,c++11后可以正常通过 - ``` - -- [nullptr and nullptr_t](./c++2.0/nullptr.cpp) - -- [Automatic Type Deduction with auto](./c++2.0/auto.cpp) - -- [Uniform Initialization ](./c++2.0/uniform_initialization.cpp) - -- [initializer_list](./c++2.0/initializer.cpp) - -- [explicit for ctors taking more than one argument](./c++2.0/explicit.cpp) - -- [range-based for statement](./c++2.0/auto.cpp) - - ```cpp - for(decl:col) { - statement - } - ``` - -- [=default,=delete](./c++2.0/default_delete.cpp) - - 如果你自行定义了一个ctor,那么编译器就不会给你一个default ctor - 如果强制加上=default,就可以重新获得并使用default ctor. - -- Alias(化名)Template(template typedef) - - - [alias.cpp](./c++2.0/alias.cpp) - - [template_template.cpp](./c++2.0/template_template.cpp) - -- [template template parameter](./c++2.0/template_template.cpp) - -- [type alias](./c++2.0/type_alias.cpp) - -- [noexcept](./c++2.0/noexcept.cpp) - -- [override](./c++2.0/override.cpp) - -- [final](./c++2.0/final.cpp) - -- [decltype](./c++2.0/decltype.cpp) - -- [lambda](./c++2.0/lambda.cpp) - -- [Rvalue reference](./c++2.0/rvalue.cpp) - -- [move aware class](./c++2.0/move.cpp) - -- 容器-结构与分类 - - - (1) 序列式容器包括:array(C++2.0新引入),vector,deque,list,forward_list(C++2.0新引入) - - (2) 关联式容器包括:set/multiset,map/multimap - - (3) 无序容器(C++2.0新引入,更换原先hash_xxx为unordered_xxx)包括:unordered_map/unordered_multimap,unordered_set/unordered_multiset - -- [Hash Function](./c++2.0/hash.cpp) - -- [tuple](./c++2.0/tuple.cpp) - - 学习资料:https://www.bilibili.com/video/av51863195?from=search&seid=3610634846288253061 \ No newline at end of file diff --git "a/codingStyleIdioms/1_classInitializers/1.1_\347\261\273\344\271\213\351\227\264\345\265\214\345\245\227.cpp" b/codingStyleIdioms/1_classInitializers/1.1_nest.cpp similarity index 97% rename from "codingStyleIdioms/1_classInitializers/1.1_\347\261\273\344\271\213\351\227\264\345\265\214\345\245\227.cpp" rename to codingStyleIdioms/1_classInitializers/1.1_nest.cpp index 2693939c..aa3f5f58 100644 --- "a/codingStyleIdioms/1_classInitializers/1.1_\347\261\273\344\271\213\351\227\264\345\265\214\345\245\227.cpp" +++ b/codingStyleIdioms/1_classInitializers/1.1_nest.cpp @@ -1,3 +1,4 @@ +/* 1.1_类之间嵌套.cpp */ // // Created by light on 19-12-9. // diff --git "a/codingStyleIdioms/1_classInitializers/1.2_\346\227\240\351\273\230\350\256\244\346\236\204\351\200\240\347\232\204\347\273\247\346\211\277.cpp" b/codingStyleIdioms/1_classInitializers/1.2_nodefault_ctor.cpp similarity index 95% rename from "codingStyleIdioms/1_classInitializers/1.2_\346\227\240\351\273\230\350\256\244\346\236\204\351\200\240\347\232\204\347\273\247\346\211\277.cpp" rename to codingStyleIdioms/1_classInitializers/1.2_nodefault_ctor.cpp index 15e27bf8..035eaeef 100644 --- "a/codingStyleIdioms/1_classInitializers/1.2_\346\227\240\351\273\230\350\256\244\346\236\204\351\200\240\347\232\204\347\273\247\346\211\277.cpp" +++ b/codingStyleIdioms/1_classInitializers/1.2_nodefault_ctor.cpp @@ -1,3 +1,4 @@ +/* 1.2_无默认构造的继承.cpp */ // // Created by light on 19-12-9. // diff --git "a/codingStyleIdioms/1_classInitializers/1.3_\347\261\273\344\270\255const\346\225\260\346\215\256\346\210\220\345\221\230\343\200\201\345\274\225\347\224\250\346\225\260\346\215\256\346\210\220\345\221\230.cpp" b/codingStyleIdioms/1_classInitializers/1.3_const.cpp similarity index 84% rename from "codingStyleIdioms/1_classInitializers/1.3_\347\261\273\344\270\255const\346\225\260\346\215\256\346\210\220\345\221\230\343\200\201\345\274\225\347\224\250\346\225\260\346\215\256\346\210\220\345\221\230.cpp" rename to codingStyleIdioms/1_classInitializers/1.3_const.cpp index 5e221c45..c2b13861 100644 --- "a/codingStyleIdioms/1_classInitializers/1.3_\347\261\273\344\270\255const\346\225\260\346\215\256\346\210\220\345\221\230\343\200\201\345\274\225\347\224\250\346\225\260\346\215\256\346\210\220\345\221\230.cpp" +++ b/codingStyleIdioms/1_classInitializers/1.3_const.cpp @@ -1,3 +1,4 @@ +/* 1.3_类中const数据成员、引用数据成员.cpp */ // // Created by light on 19-12-9. // diff --git a/codingStyleIdioms/1_classInitializers/BUILD b/codingStyleIdioms/1_classInitializers/BUILD new file mode 100644 index 00000000..a1850adf --- /dev/null +++ b/codingStyleIdioms/1_classInitializers/BUILD @@ -0,0 +1,27 @@ +# please run `bazel run //codingStyleIdioms/1_classInitializers:1.2_nodefault_ctor` +# please run `bazel run //codingStyleIdioms/1_classInitializers:initializer` +# please run `bazel run //codingStyleIdioms/1_classInitializers:1.1_nest` +# please run `bazel run //codingStyleIdioms/1_classInitializers:1.3_const` + +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "1.2_nodefault_ctor", + srcs = ["1.2_nodefault_ctor.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "initializer", + srcs = ["initializer.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "1.1_nest", + srcs = ["1.1_nest.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "1.3_const", + srcs = ["1.3_const.cpp"], + copts = ["-std=c++11"], +) diff --git a/codingStyleIdioms/1_classInitializers/initializer.cpp b/codingStyleIdioms/1_classInitializers/initializer.cpp index 8bd8bfc8..3bef4526 100644 --- a/codingStyleIdioms/1_classInitializers/initializer.cpp +++ b/codingStyleIdioms/1_classInitializers/initializer.cpp @@ -1,3 +1,4 @@ +/* initializer.cpp */ // // Created by light on 19-12-9. // diff --git a/codingStyleIdioms/2_enumclass/BUILD b/codingStyleIdioms/2_enumclass/BUILD new file mode 100644 index 00000000..633721a1 --- /dev/null +++ b/codingStyleIdioms/2_enumclass/BUILD @@ -0,0 +1,9 @@ +# please run `bazel run //codingStyleIdioms/2_enumclass:namespace` + +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "namespace", + srcs = ["namespace.cpp"], + copts = ["-std=c++11"], +) diff --git a/codingStyleIdioms/3_RAII/BUILD b/codingStyleIdioms/3_RAII/BUILD new file mode 100644 index 00000000..70012bf9 --- /dev/null +++ b/codingStyleIdioms/3_RAII/BUILD @@ -0,0 +1,39 @@ +# please run `bazel run //codingStyleIdioms/3_RAII:RAII_fstram` +# please run `bazel run //codingStyleIdioms/3_RAII:c++_example1` +# please run `bazel run //codingStyleIdioms/3_RAII:c++_example` +# please run `bazel run //codingStyleIdioms/3_RAII:RAII` +# please run `bazel run //codingStyleIdioms/3_RAII:c_example` +# please run `bazel run //codingStyleIdioms/3_RAII:c++_example2` + +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "RAII_fstram", + srcs = ["RAII_fstram.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "c++_example1", + srcs = ["c++_example1.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "c++_example", + srcs = ["c++_example.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "RAII", + srcs = ["RAII.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "c_example", + srcs = ["c_example.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "c++_example2", + srcs = ["c++_example2.cpp"], + copts = ["-std=c++11"], +) diff --git a/codingStyleIdioms/4_copy-swap/BUILD b/codingStyleIdioms/4_copy-swap/BUILD new file mode 100644 index 00000000..85aa3ed8 --- /dev/null +++ b/codingStyleIdioms/4_copy-swap/BUILD @@ -0,0 +1,9 @@ +# please run `bazel run //codingStyleIdioms/4_copy-swap:copy-swapAndADL` + +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "copy-swapAndADL", + srcs = ["copy-swapAndADL.cpp"], + copts = ["-std=c++11"], +) diff --git a/codingStyleIdioms/5_pImpl/.a.cpp.un~ b/codingStyleIdioms/5_pImpl/.a.cpp.un~ deleted file mode 100644 index 16b83e6d428f638dc0f90577a119ff61308413da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1460 zcmWH`%$*;a=aT=FfhpGN{_EPs;fWV~y101Vuf?fI+iehN-ItozdpRfm`Y{0p1_lWr zmQ({18wm_ybQHyeJ1R#tRrdhzAlqc#!mBOj8Orp{1dPm^2NV7_a^b z98AP;@(=LjU%=mBVo3BNiJtX+rt_9Z6A7uA+q`5tvpYMxlkcZ*=FRLbSE{>DYl|D- zlHBd@$==VMhqp#%_6HlQKho9D?-q9Nr(deAufGmH9eqraQPV zw6t*NwZqjRCl%g62d)8*BQ8`3X@V=?jSKlP& z2tiG7UF*g*Do@mj?AX_ULXGt`V7Z7xatx3cTuFZ7w5Ce*m}g2#dw8fVYeC@6Ie2}Y zC}dnJv=M$aR;e}9YOzwgaWifCMlLcbq%RlbxUcQUOt>+@sln7aASWV6l_gXz9G9#U z@*I_)eCm3oR$AX$DW`WU8;#~>xmdmD$w5jZ8Ja;+n?`ad64Zp;qtnPuZ#62lwX{~O zmK*hAshl>N+03VF2JK)r>v1AFoyrm_7j%!i(GmDF$2kx39;Wl2_Jd%CdKc70Oe#yL zTrfR34bx~gHqOp^Vvrd#{eft~Q5xCKT8XOsz26mU%oj!}*nUZak@g!fyeW?Gn^FDzB->*8`A9H89V+xH8I z**;eU=T!-o3Ak+w4sQb-Se(asOklB#b&zqbvxrHR2$c(_mc_)-rt(`%V9A?KfGpbq ziI|Ksy%bSWRkvk!uH1RS)V7#(8v}1*NF3?Jhy}N8HC*4UY!{p5dGBJdnv$dj$H-3A z_}?5Qbw|mrqG0FF3%i|eb}By;Qa)psDmXbi$x9oZ+?d(efOIF_JU5rt^<=J1mA=ja z?li~V0IyGrfu^d`Yi?m@s>;nQ>{s2e^Sy{RGv;U&FPa`1AU`?tlh z*C^9V@hnK+{0k}I#_d}JjXq&?*>nefI!Z)0G{W>$JPWh8j#=*H_a?e*P}c&Bem_J{ zK&EeBBPJ9HYBDvxx2}bUsQfniw4OwVK&GF7MNB9X)CAK9hpE5gP5K%eRAA!0=;8if DIO0ps diff --git a/codingStyleIdioms/5_pImpl/.timePimpl.cpp.un~ b/codingStyleIdioms/5_pImpl/.timePimpl.cpp.un~ deleted file mode 100644 index 488ccca08186dfeee9cdc39651a05b4893be2046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9179 zcmeI&&ubGw6u|LKj8^lb)mpI%;z}AG3vbSxpT5w{q#WXhl!N^$t4Mt$w5jctEpB~$QR8Se zyZJhtPz^N|hj?lEB_-Qq?^3<{5m?;Xc%&Sa?Ca#f<(1*wV`ZZ4At0l#&hIEwiAGN< zyBh&v`m9XZaHhso(e13nViMhx`X^PmU7xU?%ZA~}dn*}(a z_PQ~F$om8IB{-rGvk2Tb59f0Tu6k#s-RtGo^9K(D7-#HrLjr5Ryc9QqxyVFm3fOlK zHsU@7f{Hoe;tyh0x+NzUwkS<;`stl)PAgL-q!T3cS%Iu%OH3A)ShXzBM?4du*ISR& zq|<0#mbrXsMsH)DY~Y;PyfYJE{goI!$SMDb#D6IQTlcUw9kPT6t%>W}o#I}5efeS_ zgGiV7VTAl4q+ATah+hd=!;@K_{Xqts%QA=>ZfKlaPN!-5bdibD6tbo#vq|qSGA7TE zWgOF8lrSRrQkF&G8Fo=2Yk9K4EUUTff~Msz0$a*17m&D3p&Ij4mR)=*_pqAFDriPI z5DILzkV((c7L{nVP)&F$vc$p9{ z6LJfraW^giIY%FiQ*OD)L}?1zsbOd=9=J<2`n$cevfFE`b%YMP!Jt>J-jkS%Oq8aG zO?k00^zv!CuFzETy*57rHQ~ktBDc0QKf0jAYYN;`59c4FfU6hX^?bEmbf-^;xe*}y zCj!O=9$<=_GL4YLECTlIUtp~ru$?c%e1b7J{K~asGK=ZOwZ-hYnpOM%C}3+sZd&1~ H>(i^>f!+%~ diff --git a/codingStyleIdioms/5_pImpl/BUILD b/codingStyleIdioms/5_pImpl/BUILD new file mode 100644 index 00000000..480434cd --- /dev/null +++ b/codingStyleIdioms/5_pImpl/BUILD @@ -0,0 +1,21 @@ +# please run `bazel run //codingStyleIdioms/5_pImpl:pimpl` +# please run `bazel run //codingStyleIdioms/5_pImpl:pimplTime` +# please run `bazel run //codingStyleIdioms/5_pImpl:noPimpl` + +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "pimpl", + srcs = ["pimpl.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "pimplTime", + srcs = ["pimplTime.cpp"], + copts = ["-std=c++11"], +) +cc_binary( + name = "noPimpl", + srcs = ["noPimpl.cpp"], + copts = ["-std=c++11"], +) diff --git a/codingStyleIdioms/5_pImpl/a.cpp~ b/codingStyleIdioms/5_pImpl/a.cpp~ deleted file mode 100644 index 7a865b07..00000000 --- a/codingStyleIdioms/5_pImpl/a.cpp~ +++ /dev/null @@ -1,24 +0,0 @@ -#include -using namespace std; - -class C { - -public: - virtual void print(); -}; - - -class CC:public C { -public: - void print() { - cout<<"CC"<(new C); - //c->print(); -} - - diff --git a/codingStyleIdioms/5_pImpl/pimplTime.cpp~ b/codingStyleIdioms/5_pImpl/pimplTime.cpp~ deleted file mode 100644 index 7fc3dd2d..00000000 --- a/codingStyleIdioms/5_pImpl/pimplTime.cpp~ +++ /dev/null @@ -1,11 +0,0 @@ -#include "pimplTime.h" - -struct X::XImpl { - C c; - D d; -} - -int main() { - X x; - -} diff --git a/codingStyleIdioms/5_pImpl/timePimpl.cpp~ b/codingStyleIdioms/5_pImpl/timePimpl.cpp~ deleted file mode 100644 index 41450d51..00000000 --- a/codingStyleIdioms/5_pImpl/timePimpl.cpp~ +++ /dev/null @@ -1 +0,0 @@ -#include <> diff --git a/concurrency/Threading_In_CPlusPlus/.idea/Threading_In_CPlusPlus.iml b/concurrency/Threading_In_CPlusPlus/.idea/Threading_In_CPlusPlus.iml deleted file mode 100644 index f08604bb..00000000 --- a/concurrency/Threading_In_CPlusPlus/.idea/Threading_In_CPlusPlus.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/concurrency/Threading_In_CPlusPlus/.idea/misc.xml b/concurrency/Threading_In_CPlusPlus/.idea/misc.xml deleted file mode 100644 index 8822db8f..00000000 --- a/concurrency/Threading_In_CPlusPlus/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/concurrency/Threading_In_CPlusPlus/.idea/modules.xml b/concurrency/Threading_In_CPlusPlus/.idea/modules.xml deleted file mode 100644 index 93828d7a..00000000 --- a/concurrency/Threading_In_CPlusPlus/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/concurrency/Threading_In_CPlusPlus/.idea/workspace.xml b/concurrency/Threading_In_CPlusPlus/.idea/workspace.xml deleted file mode 100644 index 648a7014..00000000 --- a/concurrency/Threading_In_CPlusPlus/.idea/workspace.xml +++ /dev/null @@ -1,510 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -