C ++返回类型问题

时间:2011-05-09 01:18:07

标签: c++ return-type

这些之间有什么区别:

struct Class* CreateClass();

Class* CreateClass();

这只是一个工厂功能声明。你可以看到一个开头有一个结构而一个没有结构。我已经尝试了两种方式,似乎没有什么区别。

我应该使用哪个?

3 个答案:

答案 0 :(得分:6)

来自C;在C ++中没有区别*。

*好的,我撒了谎,抱歉。 :P如果你真的想要,你可以迷惑自己,如果你使用同名但基础类型不同的typedef,你可能会有所不同,但通常他们没有什么不同。假设已经宣布Class,但是......如果Class未声明,则第二个甚至不会编译。

那就是说,惯例是:

typedef struct Class { ... } Class;

因此它在C和C ++中以相同的方式编译。

答案 1 :(得分:3)

只要具有相同名称Class的范围内没有功能,它就没有区别。您不应该编写与类同名的函数,并且要遵循常见的C ++样式,您应该只使用Class *

[编辑:与Mehrdad相同的修正,没有函数或typedef ]

答案 2 :(得分:0)

在C ++中,没有区别。使用“struct”只是为了向后兼容C,其中声明struct foo { ... };会声明一个名为“struct foo”的类型,而“foo”只会如果您之后使用typedef struct foo foo,则为有效的类型名称。