我刚刚拿到了三分球的窍门,现在我的做法是,积极寻找场合使用指针,并在一切可能的情况下使用它们我可以设计。这是一个好主意吗?如果不是,为什么不呢?还是仅仅是个人偏好?
0
A
回答
-3
因为如果你使用指针无处不可能你的代码可能最终会变成这样
typedef solution_type (*algorithm_ptr_type) (
problem_type problem,
void (*post_evaluation_callback)(void *move, int score)/* = NULL*/
);
或者,也许这
#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,"\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();}
+3
我同意这个基本概念(“不要过度使用指针”),但这两个例子都不是很好。首先,回调具有完全有效的用途,其次,被混淆的代码被故意混淆,而不是因为它使用指针。 – 2012-04-09 09:00:26
7
不,绝对不是,在C++。
您应该尽量避免使用指针,在现代C++中。只有当你真的必须使用指针,并试图看看你是否可以在这些情况下使用智能指针(如shared_ptr
,unique_ptr
)。尽量少使用手动堆分配(new
/delete
),让语言尽可能处理资源的分配和释放。
了解RAII,移动语义等。
我鼓励您观看Going Native 2012演示文稿。有些演讲者(不记得是Bjarne Stroustrup还是Herb Sutter),基本上说new
和delete
几乎不会出现在应用程序代码中。
那么,在编程,C++或其他方面没有什么是绝对的。
2
您通常应该只在需要时才使用指针。在C中,这往往是相当多的。在C++中,大多数代码不应该使用指针直接 - 它应该使用某种聪明类的一个包装了指针(unique_ptr
,shared_ptr
,vector
等)
相关问题
- 1. 是否可以在指针上使用函数?
- 2. 是否可以针对每个设备进行单个试用?
- 3. static_cast是否可以将非空指针变成空指针?
- 4. 是否使用指针
- 5. 是否可以将一个常量引用作为指针?
- 6. 这是否使用C指针可以防止泄漏内存?
- 7. Silverlight:是否可以使用自定义鼠标光标/指针?
- 8. 是否可以在任何地方使用Borland C++ v3 for DOS?
- 9. 是否可以在任何地方使用Android Eclipse Plugin 0.9.9?
- 10. 是否可以指向类成员的Typedef函数指针?
- 11. QxOrm是否可以坚持指向抽象类的指针?
- 12. 是否可以找出变量名称,指向的指针?
- 13. 是否有可能有一个指针指向第一个指针所指向的变量的指针?
- 14. 最初是否可以创建C++指针而不是创建变量,然后为其指定一个指针?
- 15. 如何查看指针地图中的指针是否为0
- 16. Hive:是否可以在struct字段上使用regexp_extract? (空指针异常)
- 17. 是否可以为每个四边形指定一种颜色?
- 18. 是否可以删除取消引用指针
- 19. 指针运算符是否可以在C++中重载?
- 20. 指针是否可以存储在std :: mbstate_t类型中?
- 21. 是否有可能用一个指针和一个声明
- 22. 在memcmp我们可以使用数组而不是指针
- 23. const和普通指针的指针可以混合使用吗?
- 24. 是否可以用另一个指令代替一个指令
- 25. 在C++中,在指向某个类的指针被破坏之后,我是否可以使用新函数重新使用指针
- 26. 是否可以定义一个指向构造函数的函数指针?
- 27. 给对象一个指向“世界”的指针是否可以接受?
- 28. 如何确定Java堆是否使用压缩指针以及是否驻留在内存中的地址0?
- 29. std :: vector指针是否可靠?
- 30. 是否可以使用指向函数类型的指针来专门化模板,这样可以分别查看此指针中使用的所有类型?
http://stackoverflow.com/questions/162941 /为什么使用指针 – 2012-04-09 08:52:42
这不是一个好主意。你刚刚学会使用锤子,所以一切看起来像钉子。 – Jon 2012-04-09 08:55:03
看看这个问题:http://stackoverflow.com/questions/1064325/why-not-use-pointers-for-everything-in-c – Rps 2012-04-09 08:55:15