在每个可能的地方使用指针是否是一种好习惯
Is it good practice to use pointers in every place possible?
我可能的重复项:
为什么要使用指针?
刚刚掌握了指针的窍门,现在我的做法是积极寻找使用指针的场合,并在我能设计的各种可能情况下使用它们。这是个好主意吗?如果没有,为什么不呢?还是只是个人喜好?
不,绝对不是1,在C++。
在现代C++中,您应该尽可能避免指针。仅在真正需要时才使用指针,并尝试查看在这些情况下是否可以使用智能指针(如shared_ptr
、unique_ptr
)。谨慎使用手动堆分配(new
/delete
),让语言尽可能多地处理资源的分配和释放。
了解 RAII、移动语义等。
我鼓励您观看 2012 年本土化演讲。一些演讲者(不记得是Bjarne Stroustrup还是Herb Sutter)基本上说new
和delete
几乎不应该出现在应用程序代码中。
1 好吧,在编程中没有什么是绝对的,C++或其他方面。
通常应仅在需要时使用指针。在 C 语言中,这往往是相当多的。在C++中,大多数代码根本不应该直接使用指针——它应该使用某种更智能的类来包装指针(unique_ptr
、shared_ptr
、vector
等)。
因为如果你在任何地方都使用指针,你的代码最终可能看起来像这样
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();}
http://www.cise.ufl.edu/~manuel/obfuscate/typing.hint
相关文章:
- 将错误返回给调用方而不是立即在 C++ 中抛出错误是否是一种好的做法
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 使用类在C++中存储和列出变量/方法是否是一种好的做法
- 在解决链表问题时创建一个额外的节点是一个好习惯吗?
- 使用完数据结构后清空数据结构是一个好习惯吗?
- 在类方法中使用 "this" 指针是否是一种好的做法?
- 派生类是单例是否是一种好的做法
- 为许多类可能需要的所有常量变量制作独立的头文件是否是一种很好的做法?
- 让二传手返回布尔值是好习惯吗?
- 在同一C 源文件中使用多个名称空间是一个好习惯吗?
- 是聪明的指针是RAII的好习惯
- 使用 stl 迭代器封装向量是否很好?如果是?怎么可能呢?
- 使用 move-constructor 时将 self 重置为 nullptr 是一个好习惯吗?
- 从 r 值引用限定方法返回 r 值引用是否是一种好的做法?
- 将指针施放为成员函数作为C函数的指针是一个好习惯吗?
- 如果要调用多个成员函数,对象编辑器是否是一种好方法?
- 使用此"shortcutting function"是否是一种好的做法?
- 重建operator()是重建的好习惯
- 在每个可能的地方使用指针是否是一种好习惯
- 在销毁 pthread 互斥锁之前锁定它是否是一种好习惯