这些之间有什么区别吗:
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
时才是一个有效的类型名。