2011-09-21 63 views
1

我看到这个有时候别人的代码:为什么你会想要创建一个名为* foo()而不是仅仅是foo()的方法?

public void *foo() { 
... 
} 

public void bar() { 
... 
} 

,但我永远无法理解什么*的意思是对的,如果有public void *foo()public void foo()之间有什么区别?

***这是C++代码!

+0

你在说什么语言? – c0da

+1

此处不在话题。堆栈溢出可能会好起来。同时,请阅读精美的手册。 –

+0

很确定相同的答案(RTFineM)也会在SO上给出。 –

回答

10

public void *foo()是一个公共函数,它返回一个void指针(实际上可以是任何东西)。关于指针的更多文档可以在这里找到:http://www.cplusplus.com/doc/tutorial/pointers/(特别是void指针部分)。

public void *foo()public void* foo()是相同的,*的位置纯粹是一种风格的东西(虽然风格可以有其他地方使用时的含义)。

public void foo()是一个不返回任何内容的公共函数。

+2

是否允许在C++中使用'public'?我不记得曾经见过它,但我最近用三种不同的语言进行了大量编程,它们都变得混乱。 –

+0

你是对的:它应该是'public:',签名如下。 –

+3

关于样式的一些细节:在语法上,*绑定到变量名称,而不是类型,所以'int * foo,bar'声明了一个int-pointer变量(foo)和一个plain int(bar),这不是语法所暗示的。 'int * foo,bar'使它更加明显。 – tdammers

2

间距令您感到困惑。 void *foo(int)void* foo(int)相同。前者返回void *,后者不返回任何内容。有些人更愿意将'*'附加到该类型上以避免混淆。

相关问题