我剛剛拿到了三分球的竅門,現在我的做法是,積極尋找場合使用指針,並在一切可能的情況下使用它們我可以設計。這是一個好主意嗎?如果不是,爲什麼不呢?還是僅僅是個人偏好?
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. 是否可以在PHP中使用指針?
- 3. 是否可以在指針上使用函數?
- 4. 是否可以針對每個設備進行單個試用?
- 5. static_cast是否可以將非空指針變成空指針?
- 6. 是否使用指針
- 7. 是否可以將一個常量引用作爲指針?
- 8. 是否可以在META-INF以外的地方使用persistence.xml?
- 9. 是否可以使用c指針訪問Lua表元素?
- 10. 這是否使用C指針可以防止泄漏內存?
- 11. shared_ptr垃圾桶的分配是否可以使用`this`指針
- 12. Silverlight:是否可以使用自定義鼠標光標/指針?
- 13. 這個系統對象指針代碼是否可以在Swift中使用?
- 14. 是否可以在本地使用GAE?
- 15. 是否可以檢查鼠標指針是否在某個類上?
- 16. 是否可以在任何地方使用Android Eclipse Plugin 0.9.9?
- 17. 是否可以在任何地方使用Borland C++ v3 for DOS?
- 18. NSNotification是否可以在任何地方使用?
- 19. 可以將一個void指針安全地指向annother指針嗎?
- 20. 是否可以指向類成員的Typedef函數指針?
- 21. 是否可以找出變量名稱,指向的指針?
- 22. QxOrm是否可以堅持指向抽象類的指針?
- 23. 指針是否可以指向const空類或非const類?
- 24. 使用另一個指針指向地址的指針C
- 25. 最初是否可以創建C++指針而不是創建變量,然後爲其指定一個指針?
- 26. 是否有可能有一個指針指向第一個指針所指向的變量的指針?
- 27. 在C中,指針的地址可以是0嗎?
- 28. Hive:是否可以在struct字段上使用regexp_extract? (空指針異常)
- 29. 是否可以爲每個四邊形指定一種顏色?
- 30. 是否可以從嵌套類引用outter類指針?
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