C++类中变量的多重定义

Dan*_*Dan 1 c++

假设这两个 cpp 文件:

0.cc

#include <iostream>

class test{
 public:
 int num = 5;
};

int main(){
 test t;
 return t.num;
}
Run Code Online (Sandbox Code Playgroud)

1.cc

class test{
 public:
 int num = 6; // <-- note this has a different value.
};
Run Code Online (Sandbox Code Playgroud)

我们用g++ 0.cc 1.cc.

从 C++11 开始,在类中初始化成员变量是有效的。我的问题是它如何编译 whiteout 链接器错误?这是未定义的行为吗?因为我们正在打破一个定义规则。如果没有使用类,这将在编译时产生链接错误。

我知道在一个类中定义一个函数会使其内联,因此可以在不同的文件中包含多个函数,但不确定多个变量如何?

bol*_*lov 5

是的,它违反了一个定义规则,它是未定义的行为