C++类中变量的多重定义
假设这两个 cpp 文件:
0.cc
#include <iostream>
class test{
public:
int num = 5;
};
int main(){
test t;
return t.num;
}
1.cc
class test{
public:
int num = 6; // <-- note this has a different value.
};
我们用g++ 0.cc 1.cc.
从 C++11 开始,在类中初始化成员变量是有效的。我的问题是它如何编译 whiteout 链接器错误?这是未定义的行为吗?因为我们正在打破一个定义规则。如果没有使用类,这将在编译时产生链接错误。
我知道在一个类中定义一个函数会使其内联,因此可以在不同的文件中包含多个函数,但不确定多个变量如何?
回答
是的,它违反了一个定义规则,它是未定义的行为。