Is it good practice to use pointers in every place possible?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Why use pointers?
我刚刚掌握了指针的窍门,现在我的练习是积极寻找使用指针的场合,并在我能想到的任何可能的情况下使用它们。这是个好主意吗?如果没有,为什么不呢?还是只是个人喜好?
不,绝对不是,在C++中。
在现代C++中,你应该尽量避免指针。只有在必须使用指针时才使用指针,并尝试查看在这些情况下是否可以使用智能指针(如
我鼓励你观看2012年的本土演讲。有些发言者(不记得是bjarne stroustrup还是herb sutter)基本上说
1井,编程中没有绝对的,C++或其他的。< /Sub >
通常只应在需要时使用指针。在C语言中,这通常是相当多的。在C++中,大多数代码根本不应该使用指针——它应该使用某种类型的更聪明的类来包装指针(EDOCX1,1,EDCOX1,0,EDCOX1,8,等等)。
因为如果你在任何地方都使用指针,你的代码可能会变成这样
1 2 3 4 | typedef solution_type (*algorithm_ptr_type) ( problem_type problem, void (*post_evaluation_callback)(void *move, int score)/* = NULL*/ ); |
或者这个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> #define A(a) G a(); #define B(a) G (*a)(); #define C(a,b) G a() { printf(b); return X; } typedef struct F G;A(a)A(b)A(c)A(d)A(e)A(f)A(g)A(h)A(i)A(j)A(k)A(l)A(m)A(n)A( o)A(p)A(q)A(r)A(s)A(t)A(u)A(v)A(w)A(x)A(y)A(z)A(S)A(N)void Q();struct F{B(a)B (b)B(c)B(d)B(e)B(f)B(g)B(h)B(i)B(j)B(k)B(l)B(m)B(n)B(o)B(p)B(q)B(r)B(s)B(t)B( u)B(v)B(w)B(x)B(y)B(z)B(S)B(N)void(*Q)();}X={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p, q,r,s,t,u,v,w,x,y,z,S,N,Q};C(a,"z")C(b,"y")C(c,"x")C(d,"w")C(e,"v")C(f,"u")C( g,"t")C(h,"s")C(i,"r")C(j,"q")C(k,"p")C(l,"o")C(m,"n")C(n,"m")C(o,"l")C(p,"k" )C(q,"j")C(r,"i")C(s,"h")C(t,"g")C(u,"f")C(v,"e")C(w,"d")C(x,"c")C(y,"b")C(z, "a")C(S,"")C(N," ") void Q(){}main(){X=g().s().v().S().j().f().r().x().p(). S().y().i().l().d().m().S().u().l().c().S().q().f().n().k().v().w().S().l().e ().v().i().S().g().s().v().S().o().z().a().b().S().w().l().t().N();} |
http://www.cise.ufl.edu/~manuel/obfuscate/typing.hint