C++返回类型问题



这些之间有什么区别吗:

struct Class* CreateClass();

和:

Class* CreateClass();

它只是一个工厂函数声明。你可以看到一个在开始时有结构,一个没有。我已经尝试了两种方式,但似乎没有区别。

我应该使用哪个?

它来自 C;C++没有区别*。

*好吧,我撒谎了,对不起。 :P 如果您真的愿意,您可以混淆自己,如果您使用具有相同名称但不同基础类型的typedef,则使它们有所不同,但通常它们没有不同。不过,这是假设Class已经声明了......如果未声明Class,则第二个甚至不会编译。

也就是说,公约是要做的:

typedef struct Class { ... } Class;

这样它在 C 和 C++ 中的编译方式相同。

只要

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

[编辑:与Mehrdad相同的更正,没有函数或类型定义]

在C++中,没有区别。 使用"struct"只是为了向后兼容C,其中声明struct foo { ... };将声明一个名为"struct foo"的类型,而"foo"只有在使用typedef struct foo foo时才是一个有效的类型名。

最新更新