From d3f67da7867dc4d2e7805c02c0c663d09522fe65 Mon Sep 17 00:00:00 2001 From: davoudn
bVG>5R4)EN!`NQNLa(YvkTytYc138`u1}?mi68LOtHV42@tukr_B!2mlCHl;g zQf+xn_2MOZc}ay)n`u_dOJ-?H)~s2yxLPkOnOQQ|+NhKQYt}$bMM-(3g=VE7T%GuD z4E}Rs2N{c$*4%HW!#f@{TsHALhVX!Cr=9>M<<9zL%vWulWEjn=POS@|8ZJ`aqC5U zoc2xC9=Qj#vD$6i{>>9NU~3$s5teLBoPRft98T>4w5h1`kUEF# 7W`K& z_+bnFGz)&jf Ud5c s4Zyi7CZveD4iDkcmu0x zn=E*KL=e>5Ecl5Q{$2~d*n;0`!BbqTa=!(Cf PYzik#ghpdp=Zo!{y(X-Qn zKgELIYr#*p;76;Y9{4gI_*?OrpL@Fw7J0i1U%OP(yx-oLaAx|wT`v~BAjC7XK3b@0 znR7qJzr|-&X~f?`l%f5ZOs1( y WCcnVCkG>*#*7N50=_+DTL{?~}uGix7#^ACGd!`@x*U+Ud8 zGREuJ<9+3DViFX5n-vsg2IV{}d0Ic47W@o-X~_#4yj=_Cfm8FQ-cF47b}wi`BmLUn zGnsS{(YUAZd*E|i3t6Lok{? =ed&)6Wiq{{*5^sb4s@=i{}s->*640K4a{tMQ#XxxQ^{d(w`cfBY_Ex8 zIguY}TF7i6+*5cL&VSz29+ ~b34l(1#7Im! zOoSmun*w4wx=zFHL2s%7&aLf-Pt%wnKo4-gBR!8ok2kdon0|6v>Sb^0&GdYlk8a3x z*A9XL9YFV`-vRo-nQHC?zAv3L=dMEx$Ubdi{A~66f_b+bs2AH0jUN3A^?wn)%Hf@b zx@DqBhsDima2Qmw-yZcez8=rJJidj9O4;m7@1+jrdj^W{rf>vDU;4ihZkzv*D8{rD z;owfFZJu|;xWy6B5sL1`UbJCs@HM44&M0r`ylDt-S;G2jMvv6zkzfI7m(w<9)r zd7NYzVa&7 390jOUwiYe>S?Z`n~I* zTa1u`Kh*%^<@B6qM2(m~ta)!YarC8sA;*LmU0h`Kh4PcRR$#YHcf+vMFFf%&6j?2y zCAhsomclG8rO-WKje-&6zU@3}r#D4D_rT|U=_iCEJ;O+H_@lTMUD2mY6o%amBWCI< zOrQEcnT&OXskJN;L6)r#*=)_vDJ) VJ&g0R7#Ur3pHXft~|oHY{69RV0tWqar4f^ zSJAr^6$2CEF^C_SoP+Su5qe!Jz|tGB@}Lh}Z #E26JTJgo}<^i_!`KT8@iRvtx!@FYy9j7F0oBCCT; zFBH3i#n`TcRp<;6ne4}++6x)fMU z3kIWMmQB+V4}># z{8J>kUduF7;+dPPiv!c8R9|`%ER)#)eeLn4elIayZT${!mnU6{@$_rSSBU+ p!6sDAE8d79*TV`}GVM#@j-A5$c?*ny6~u#!F$Bkr4NIGPLXlY#YtJ*^_Ho7zYq+ zG6m6B6XcZpX&_ymky1gJ?-@@1$?6Jtf_fCrw&w`xcXA~8J)J)MnecZd4f+|1foDsp zlh5{lqma%}=#Emx-mXChW~DHF&&M=8LLu#;PPWxzA$W$LC1GAj6KHNQ#;nxx9M~-Z zLAgx?s5 b6Xy1%#~3rH=7KN>8sKpt-q=C5r{_VaI`!fr zarRS^FA3}R)TG``--(B`15>Hn>eSCXn?Fq)4^bkV3c;F`7~A)0oLw)vu3mJ_qH7mj zmz8_nFmFU0jl}M7L>{;vXEMt`)lBjn?t>wgu*GnX)R&djQnY;ybLchyElc;8abit( zXrLzbj`Yo$B2r(-_RW8aEdmST&2*fO4yl1`_duFxBUlOSo=q?#pL=Nb#MIJ+y$hM6 zj#dWtWi&g8 _ohsX6}AOjbnfM2up9@hZKbN?2q0mLACZqh8UZo zIfv?uGLTBX+I7>bj^uIh@W9X@j6l nXrmAx({p=Iiu@yN1}-QGlyt^#U!t#JO^ AlypaURc)WIYjO|Fh9MBOs3}r*xB81 z$Q#(_-L)SNxiknQJ0NR;e961(&p_^lQBE?j%X5g%AJk=~=g@}dDJ7dDQ(guK+^xoL z-=9G= VZ)YjCx?y1EU@o^}zp6571j>RF;PDs$VjYh{oLO{Bd_I z89AH2_tOIYNF OlB^i8_);XzCV+p_iVrZmrUj& zd@NP@RwmPqk6-Tu>;-%TumyZi1Je6uzXE&&a1d}W;4okj Eb}*CK4mb;N05AqP0(i=MnapIoBQYItF5t_6LBI^)X23J?sQVz`)qpPowgJ8c z_#U7O{v3~| PK0NRb0MchDBY g#s=%|$HH>l>P9qU#pt zk_ls%!5}n={v-T-4RrB7m7>?0^k0I02I%7bEJeS}q#p#`brk&|YmOUzHNq3)?tKV- zp051i293r(h?uViEa<{Ssy>`mq7$Nf@pmqKHb^`H3y-I3jB}r9ODD$u26UYTK10uH zlfISdxqLzWY{TEnkiP}6V4|&`PN~NY+5rA8!kEdff=>~=%I2HRz6!7geR=#sI;Mes zDd@MNZphPk)|)!K;CTQ%xyD2GQmha?gnB{DVh8ED(zN$B@C|~GVy9rWh0j?hm?#dO zL|>DUYiJ$}dw33r{wnB;K^O1usqt2uwtftH1?c#U$&?S7^hwAuBtO|oUun`SK%WPC z*h+V
sXnXr()^HuOIUdK&afE4|&6e-(5G za_Sl@-6;n^{`nYm%F)ZM^o^$cqyo$r==j{$^iPvXuK>Lr^nB~A9`qpS q}0lf$GMl0R zhV2YDG3;e{Kf`SdcQWi}ILL6AA%5H_ii@F}VJX8ZhCYUC8MZUbZT+#a>i1E0PW&Wp zo_l&jV=|IRy35M(gSXNdWl7O2+gOfP#rcf3OJ=tzJPNcAGuc@BMH#KR0_}F5a5pp1 zSuhtr#gkKWX)bYCWM%+2 (}1NQ;rRX$Vsh2HQvn*LRJ^glKg z3Q?5)iO@s+sywOm=kxys;CCQP6wwDbwvx-9x!~8dlQi`^e JkUFtKgRsG zvz{R1Kf?lc!ye6M&!fyg!sAuT^4GwhKr>k?72uIZls81b+^~Q#V8~_9Nx;*%?D{JO zzeNF8S2O=s_VdGxznSsv91pV?{}X{fQqRjmze~H1{qq{L90nviU*drdGX4$0&kYN3 zVgn=l_jA7wGOdE~7qOqkGe2n6z^mA>sL|rUpWr-Qv*+(ktmj4Ez^`GUhZ(<{<1@_o zGaS->r&}WES%=E2% )Fe3crnxd$oRFVNQ9U1U*yqKf`bp) z`Bz>j>U>4dWQ3n=^UpUKe?IrShV?(sc>8#N!T3km9_8ovfX_9qv2b86{8t6urEQ%m zJ5)ShV4YHY4l?3AwCll?!p**`Cj{*8I?y?O8t< 9jnuETL$2S&`t9rD zImVCY{9Mlbp8!w!+@3$3IA6Qa?;766RafJHC;J!j!McnItAWpD&t~TT6Z3Ck{@>-{ z|3K-t`S~22|EXVle0qQ qJObK%bb-fd;%dL{7WhwIs&N;Z~9Pm1}I9EXjpXE)>R=a~bHkMg+Gx+|C{ z`+b@ne5 ~T2sv57Se;swzl;Uv9xq>CbC%Ra*~ojd%L*#qy|^CgrmfRW<{B} z<0OGwR|pfPi%a};(~IuMH7G&;dY0OyVO%-0yk_O%MKusfHtN;7xbr05;%^VdrS@zx zE~u$kl57kGTIseLec7r-wI1Db`BJ(kN5@T5y2r~%@6uJ8zVz#tFRHCxVsx@{*|IuM zy (R#i=syL=l54!{FfGWJLI&DcstsN2-0ojJCQ`9s26Z z_4-nM)r$HuQi>~d%F1=|HFR`6%|vxgW2whe2`x1C=z13Rcsd|jAw~SvLZN3#xwvje zj n*Y~Kdxf|l6j>`2_kb<2aF)BM7 z^T-in2K~WcEEJDNo7ga4J>)IpTP?mj7xx5Zn}o45EsXesfoxhR=uh|!_v9BZ(`)5j zLin2A!}s%;I_X{_TYobl5Dck{g*-kCn8Yv(rR;FspWsn+U>IbBa5iiU27|bPho>yR zO>@wNd~pC*^F(9*X4A4+y10ypyN|}WBXiu bGqG3Y zn+fz^p>wLwj(**5$@!F1v(mmut>q%MvNt)8=eG^B3WMZw5SM=$?vv|=E={wJmWC?A zzhXJ<3NmigiZI;wPh5m%>jamg*)ZakILiVp5pFjYoEbQ|XI73g`_?mKtQ0B72!Asi zX+x2{$)ko|U%N!@{zA)9b4HFeDQ;}Dj~4gN*-*zY5PSBQUY~QUo1;!!BF6z$<-Kp3 zj?3euTguCG2ctYuP}Ju>l^_x+J}WH85)o+fHo#mL*jcA{E;>itmWyOXuhJR&r`j); z);Gr^>jE9Vj+$_(N3Yl0!}0b&>zp7CW=L$}l;QDUE3Tkz1^4Z7p!0Qlmd^g+=|A?m z5*&JCJg(eHp^<&5A^H5sInEirIQ`Yi4bV8uV)GaK=9jQN$8;Za0Osb_=3Ak*hkOYR zM;v1>R3{&-VB@|;;~v5+pXa!7F^dk5smy}lmV;G$2wxppmzdKOjji*?g4L^5$ZdHg zj)=5WX2(Kp(T V%p{1I~_hxH~e08zjZ!2#z&I^0D0;Dz4q6BNzEB&n2P8Ia40aj$A2}ZnI`UD~Ydf zOZXcB6EO)}R4p9A1*Pp;3Er~}l{80^CGD{&?)6Npx1bu6VO&KV4l)XtPtKr6T*2Pr zkGE(g!SxYzAz>mWDIK^Sl (2&n}ueOp=p9iV- zY@59Oe(h RpVFh6)4DG!x--s*zNa2 z9v{IO<5%w;D41r&WFz@m$*a#*!@%LI9YbEd$Dp8kZviZ#kPd741{(BEfU;k`2cY0W zX2!?%q9{HEHv&uV7^t>-&p^SQQcU=m>{RwMTI)fDe5&Ntdk+e#_a0RLN?wis9+qFs z3e|fQ3aa-mNS?kbu*?4kaO4xEA0LUy!jM14W8{(Ze;+7Tc{j@`xYp)yn|kesHu+5_ z$gUJr{K^2;R&bk5zL(_{w7#=VI+UD(&)DP#`2$V`D-|ONqu83-4&bcgSKk{ch>th3 zihce3jOEq*tM4rpjAluj^QX|ivdOFO!4*{Z+$(;2|9`N_`^qJ!g3r;yvlJCS3iUQB zG=63O_<53|;1 *hNP@0IfcFu!h}=ytM8%QRgz;eDYuj=OP#8v+<&PJ zujDVZ;gvcoRIy`a^;OAMC%(s^Lf;F}SJujY6&Lt=%dj0)qwKAb)$dbqS&Hgcp(tIb Su`3+G=Bs6^(k5VQYX1vwTc@Z1 diff --git a/CPlusPlus20ForProgrammers-master/examples/vector/main01_shapes_defaultConstructor.cpp b/CPlusPlus20ForProgrammers-master/examples/vector/main01_shapes_defaultConstructor.cpp new file mode 100644 index 0000000..c0092c9 --- /dev/null +++ b/CPlusPlus20ForProgrammers-master/examples/vector/main01_shapes_defaultConstructor.cpp @@ -0,0 +1,16 @@ +#include "shapes_defaultConstructor.h" +#include + +int main(){ + Cube a(1.0); + Cube b(3.0); + +// Cube d{Cube()}; + Cube c(a); + + c[0] = 100.0; + + std::cout << "a.data-->"<< a[0] << " c.data--->" << c[0]; + +return 0; +} diff --git a/CPlusPlus20ForProgrammers-master/examples/vector/shapes_defaultConstructor.cpp b/CPlusPlus20ForProgrammers-master/examples/vector/shapes_defaultConstructor.cpp new file mode 100644 index 0000000..28d8717 --- /dev/null +++ b/CPlusPlus20ForProgrammers-master/examples/vector/shapes_defaultConstructor.cpp @@ -0,0 +1,39 @@ + +#include "shapes_defaultConstructor.h" + + +double& Cube::operator() (int i){ + try { + if(i==1) + return L; + if (i==2) + return W; + if (i==3) + return H; + if (i<1 || i > 3) + throw(i); + } + catch(int i){ + std::cout << "out of index" << i << "\n"; + exit(0); + } + return tmp; + } + + +Cube::Cube(double _L , double _W , double _H, long int _N ):N(_N){ + SetL(_L); + Data = new double[N]; + Data[0] = _L; + //std::cout << "Constructor was run!\n"; +} + + + +void Cube::SetL(double _L){ + L = _L; +} + +const double& Cube::GetL() { + return L; +} diff --git a/CPlusPlus20ForProgrammers-master/examples/vector/shapes_defaultConstructor.h b/CPlusPlus20ForProgrammers-master/examples/vector/shapes_defaultConstructor.h new file mode 100644 index 0000000..fddba65 --- /dev/null +++ b/CPlusPlus20ForProgrammers-master/examples/vector/shapes_defaultConstructor.h @@ -0,0 +1,23 @@ +#include + +class Cube { + public: +explicit Cube(double _L = 0, double _W = 0, double _H = 0, long int N = 1); + + ~Cube(){ + std::cout << "Destructor was run!\n"; + delete [] Data; + } + void SetL(double _L); + + const double& GetL(); + double& operator() (int i); + double& operator[] (int i){return Data[i];}; + + private: + double L,W,H; + double* Data; + double tmp; + int N ; +}; + diff --git a/CPlusPlus20ForProgrammers-master/examples/vector/vector.h b/CPlusPlus20ForProgrammers-master/examples/vector/vector.h index d74f70f..4036f5e 100644 --- a/CPlusPlus20ForProgrammers-master/examples/vector/vector.h +++ b/CPlusPlus20ForProgrammers-master/examples/vector/vector.h @@ -14,25 +14,21 @@ class vector{ } ; protected: - T** data; + T* data; int N; }; template vector ::vector(int _N, T _Val ):N(_N){ - data = new T*[N]; + data = new T[N]; for (int i{0}; i < N; i++){ - data[i] = new T(_Val); + data[i] = T(_Val); } } template vector ::~vector(){ - for (int i{0};i < N; i++){ - delete data[i]; - std :: cout << i << "\n"; - } delete [] data; } @@ -40,7 +36,7 @@ template T vector ::operator[] (int i){ try { if (i>=0 && i < N){ - return *data[i]; + return data[i]; } else throw(i); diff --git a/CPlusPlus20ForProgrammers-master/examples/vector/vector_pointer.h b/CPlusPlus20ForProgrammers-master/examples/vector/vector_pointer.h new file mode 100644 index 0000000..d74f70f --- /dev/null +++ b/CPlusPlus20ForProgrammers-master/examples/vector/vector_pointer.h @@ -0,0 +1,58 @@ +#include + +namespace myspace { +template +class vector{ + public: + vector(){} + vector(int _N, T _Val); + ~vector(); + T operator[] (int i); + void resize(); + int size(){ + return N; + } + ; + protected: + T** data; + int N; +}; + + +template +vector ::vector(int _N, T _Val ):N(_N){ + data = new T*[N]; + for (int i{0}; i < N; i++){ + data[i] = new T(_Val); + } +} + +template +vector ::~vector(){ + for (int i{0};i < N; i++){ + delete data[i]; + std :: cout << i << "\n"; + } + delete [] data; +} + +template +T vector ::operator[] (int i){ + try { + if (i>=0 && i < N){ + return *data[i]; + } + else + throw(i); + } + catch(int i){ + std::cout << "out of range, try to access "<< i << " out of " << N <<"\n"; + exit(-1); + } + } + +/// end of namespace /// +} + + +