开发者

C++ return type question

Is there any difference 开发者_高级运维between these:

struct Class* CreateClass();

and:

Class* CreateClass();

It's just a factory function declaration. You can see that one has struct at the start and one doesn't. I've tried it both ways and it doesn't seem to make a difference.

Which should I be using?


It's from C; there's no difference* in C++.

*Okay, I lied, sorry. :P You can confuse yourself if you really want to, and make them be different if you use a typedef with the same name but a different underlying type, but normally they're not different. That's assuming Class is already declared, though... if Class is undeclared, the second one won't even compile.

That said, the convention is to do:

typedef struct Class { ... } Class;

so that it compiles the same way in both C and C++.


It doesn't make a difference as long as there's no function in scope with the same name Class. You shouldn't write a function with the same name as a class, and to follow common C++ style you should use just Class *.

[Edit: same correction as Mehrdad, no function or typedef]


In C++, there is no difference. The use of "struct" there is just for backwards compatibility with C, in which declaring struct foo { ... }; would declare a type named "struct foo", and "foo" would only be a valid type name if you then used typedef struct foo foo.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜