shared_ptr.h 智能指针 像一个指针

This commit is contained in:
youspectrum 2022-09-28 21:00:23 +08:00
parent 9cbdc30509
commit 5afd86f6d4
9 changed files with 42 additions and 83 deletions

View File

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

Binary file not shown.

View File

@ -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

Binary file not shown.

View File

@ -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

View File

@ -96,4 +96,8 @@ public:
current = current->next;
return i;
}
// LNode<T> operator->(){
// return &(operator*());
// }
};

26
h/shared_ptr.h Normal file
View File

@ -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 T>
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;
};

View File

@ -2,6 +2,7 @@
#include "h/List.h"
#include "h/String.h"
#include "h/Faction.h"
#include "h/shared_ptr.h"
int main() {
List<double> list = *new List<double>;
@ -13,5 +14,9 @@ int main() {
std::cout << ++list << std::endl;
std::cout << ++list << std::endl;
std::cout << list << std::endl;
shared_ptr<String> ptr(new String("ptr"));
std::cout << ptr->get_c_str() << std::endl;
return 0;
}