我很清楚class 和 struct 之间的区别,但是我很难权威地说这是否定义明确:
// declare foo (struct)
struct foo;
// define foo (class)
class foo {
};
// instance of foo, claiming to be a struct again! Well defined?
struct foo bar;
// mixing class and struct like this upsets at least one compiler (names are mangled differently)
const foo& test() {
return bar;
}
int main() {
test();
return 0;
}
如果这是未定义的行为,有人可以指出权威(即 ISO 中的章节和诗句)参考的方向吗?
处理此问题的编译器(Carbide 2.7)相对较旧,我尝试过的所有其他编译器对此都非常满意,但显然这并不能证明任何事情。
我的直觉是这应该是未定义的行为,但我找不到任何东西来证实这一点,我很惊讶 GCC 版本或Comeau都没有警告过它。