diff --git a/CMakeLists.txt b/CMakeLists.txt index 4475835..2d63891 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,4 +3,4 @@ project(MSTL) set(CMAKE_CXX_STANDARD 14) -add_executable(MSTL main.cpp h/String.h h/List.h h/Singleton.h h/Faction.h) +add_executable(MSTL main.cpp h/String.h h/List.h h/Singleton.h h/Faction.h h/shared_ptr.h) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 3361ace..76ac69f 100644 Binary files a/cmake-build-debug/.ninja_deps and b/cmake-build-debug/.ninja_deps differ diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 17f3c45..7bcd47a 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,83 +1,7 @@ # ninja log v5 -0 188 1664284334515694444 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -188 243 1664284334567693897 MSTL 5fce564c316cd3aa -1 188 1664285135807563974 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -188 239 1664285135859563459 MSTL 5fce564c316cd3aa -0 187 1664286405486806906 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -187 239 1664286405538806118 MSTL 5fce564c316cd3aa -1 188 1664286744894028197 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -188 239 1664286744946027511 MSTL 5fce564c316cd3aa -0 194 1664286766573742789 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -194 251 1664286766629742054 MSTL 5fce564c316cd3aa -0 193 1664286868484424474 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -193 246 1664286868536423810 MSTL 5fce564c316cd3aa -0 189 1664286919115782277 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -189 242 1664286919167781622 MSTL 5fce564c316cd3aa -0 186 1664287171176682714 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -187 238 1664287171228682089 MSTL 5fce564c316cd3aa -1 202 1664287184384523940 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -202 256 1664287184436523315 MSTL 5fce564c316cd3aa -1 185 1664287209800219252 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -186 240 1664287209852218630 MSTL 5fce564c316cd3aa -1 199 1664329383842216634 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -199 266 1664329383906216308 MSTL 5fce564c316cd3aa -1 188 1664329414818043299 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -188 242 1664329414874042961 MSTL 5fce564c316cd3aa -0 185 1664329437401900049 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -185 238 1664329437453899706 MSTL 5fce564c316cd3aa -0 192 1664329501089439367 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -192 245 1664329501141438964 MSTL 5fce564c316cd3aa -0 192 1664329527377230990 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -192 250 1664329527433230537 MSTL 5fce564c316cd3aa -1 184 1664329547385067080 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -184 240 1664329547437066648 MSTL 5fce564c316cd3aa -0 195 1664329562044944504 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -195 248 1664329562096944066 MSTL 5fce564c316cd3aa -0 197 1664329595928654474 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -197 254 1664329595984653987 MSTL 5fce564c316cd3aa -0 189 1664329615980479137 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -189 241 1664329616032478679 MSTL 5fce564c316cd3aa -1 255 1664362496682112840 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -255 317 1664362496746112216 MSTL 5fce564c316cd3aa -0 196 1664363080886255298 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -196 249 1664363080938254639 MSTL 5fce564c316cd3aa -1 207 1664363210744642220 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -207 260 1664363210796641586 MSTL 5fce564c316cd3aa -1 203 1664363257776071859 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -203 261 1664363257832071184 MSTL 5fce564c316cd3aa -1 194 1664363286447727306 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -194 246 1664363286499726683 MSTL 5fce564c316cd3aa -1 194 1664363358970865459 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -195 254 1664363359030864752 MSTL 5fce564c316cd3aa -1 192 1664363365618787106 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -193 248 1664363365674786446 MSTL 5fce564c316cd3aa -0 202 1664363382634587018 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -202 253 1664363382686586408 MSTL 5fce564c316cd3aa -0 188 1664363478485471484 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -188 239 1664363478537470884 MSTL 5fce564c316cd3aa -0 189 1664363513793065064 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -189 240 1664363513841064513 MSTL 5fce564c316cd3aa -1 195 1664363564708482769 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -196 245 1664363564756482222 MSTL 5fce564c316cd3aa -1 185 1664363576644346871 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -185 235 1664363576692346325 MSTL 5fce564c316cd3aa -1 214 1664363882324928799 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -214 275 1664363882384928137 MSTL 5fce564c316cd3aa -0 206 1664363895636782145 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -206 258 1664363895688781573 MSTL 5fce564c316cd3aa -0 196 1664363902264709182 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -196 247 1664363902312708654 MSTL 5fce564c316cd3aa -0 196 1664364097282576557 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -196 251 1664364097338575948 MSTL 5fce564c316cd3aa -1 200 1664364169229795598 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -200 251 1664364169281795034 MSTL 5fce564c316cd3aa -1 194 1664364181837659012 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -194 247 1664364181889658448 MSTL 5fce564c316cd3aa -0 198 1664364741940511390 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -198 250 1664364741988511222 MSTL 5fce564c316cd3aa -0 198 1664364752388473992 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -198 247 1664364752436473817 MSTL 5fce564c316cd3aa -1 194 1664367851489745858 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 -195 248 1664367851541745359 MSTL 5fce564c316cd3aa 0 197 1664367911765168078 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 197 247 1664367911813167618 MSTL 5fce564c316cd3aa +1 201 1664369005344443406 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 +201 254 1664369005396441968 MSTL 5fce564c316cd3aa +0 210 1664369061766923384 CMakeFiles/MSTL.dir/main.cpp.o 134556d569115d52 +210 264 1664369061818922019 MSTL 5fce564c316cd3aa diff --git a/cmake-build-debug/CMakeFiles/MSTL.dir/main.cpp.o b/cmake-build-debug/CMakeFiles/MSTL.dir/main.cpp.o index ed9d574..23ec0c8 100644 Binary files a/cmake-build-debug/CMakeFiles/MSTL.dir/main.cpp.o and b/cmake-build-debug/CMakeFiles/MSTL.dir/main.cpp.o differ diff --git a/cmake-build-debug/MSTL b/cmake-build-debug/MSTL index 5e34218..9fc4827 100755 Binary files a/cmake-build-debug/MSTL and b/cmake-build-debug/MSTL differ diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 1523754..8741045 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Sep 28 20:25 CST +Start testing: Sep 28 20:44 CST ---------------------------------------------------------- -End testing: Sep 28 20:25 CST +End testing: Sep 28 20:44 CST diff --git a/h/List.h b/h/List.h index aee0738..b73a5e1 100644 --- a/h/List.h +++ b/h/List.h @@ -96,4 +96,8 @@ public: current = current->next; return i; } + +// LNode operator->(){ +// return &(operator*()); +// } }; diff --git a/h/shared_ptr.h b/h/shared_ptr.h new file mode 100644 index 0000000..d426fc0 --- /dev/null +++ b/h/shared_ptr.h @@ -0,0 +1,26 @@ +// +// Created by dongl on 22-9-28. +// + +#ifndef MSTL_SHARED_PTR_H +#define MSTL_SHARED_PTR_H + +#endif //MSTL_SHARED_PTR_H + +/// 智能指针 像一个指针 +template +class shared_ptr{ +public: + T& operator*() const { + return *px; + } + + T* operator->() const { + return px; + } + + shared_ptr(T* p) : px(p) {} +private: + T* px; + long* pn; +}; \ No newline at end of file diff --git a/main.cpp b/main.cpp index ae3528b..814692b 100644 --- a/main.cpp +++ b/main.cpp @@ -2,6 +2,7 @@ #include "h/List.h" #include "h/String.h" #include "h/Faction.h" +#include "h/shared_ptr.h" int main() { List list = *new List; @@ -13,5 +14,9 @@ int main() { std::cout << ++list << std::endl; std::cout << ++list << std::endl; std::cout << list << std::endl; + + shared_ptr ptr(new String("ptr")); + std::cout << ptr->get_c_str() << std::endl; + return 0; } \ No newline at end of file