摘要:如果您声明 astruct
和 aclass
具有相同的名称会发生什么。
详情:
我正在查看一些代码,我看到了这样的警告:
warning: struct 'foo' was previously declared as a class
使用 clang 编译时,还有几个地方 clang 添加了注释:
foo.h:29:1: note: did you mean struct here?
class foo;
^~~~~
struct
显然,拥有同名的结构和类并不是一个好的编码习惯。看起来发生的事情是开发人员正在编写自己的类,并使用了一个已经在他包含的另一个文件中使用的名称,而他没有注意到这一点。
但是,我的问题是编译器是否能够区分声明为的变量class foo
和声明的变量之间的区别struct foo
?
编辑:
实际上发生的事情是开发人员正在使用他创建的class foo
in a 。class bar
我认为与此同时,class foo
声明的地方已更改为struct bar
. 这就是编译代码的原因。所以我想我的问题的答案是,struct
在class
声明对象时是可以互换的。我仍然认为始终如一地使用它们是个好主意。