gpt4 book ai didi

c++ - 混合类和结构

转载 作者:IT老高 更新时间:2023-10-28 22:13:13 28 4
gpt4 key购买 nike

我很清楚 difference between class and 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就像警告过一样。

最佳答案

在我看来,它就像是已定义的行为。特别是,§9.1/2 说:

A declaration consisting solely of class-key identifier ; is either a redeclaration of the name in the current scope or a forward declaration of the identifier as a class name. It introduces the class name into the current scope.

标准在定义一个类时区分使用classstructunion,但在这里,说关于声明,没有这样的区别——使用一个 class-key 等同于任何其他。

关于c++ - 混合类和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4866425/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com