Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中变量的多重定义+;班级_C++ - Fatal编程技术网

C++ C+中变量的多重定义+;班级

C++ C+中变量的多重定义+;班级,c++,C++,假设这两个cpp文件: 0.cc #包括 课堂测试{ 公众: int num=5; }; int main(){ 试验t; 返回t.num; } 1.cc 类测试{ 公众: int num=6;//是的,这是一个违反,它是。是的,它是一个违反,它是。只是确认一下,一个定义规则不适用于成员函数,因为内联规则适用,它挂起该函数的一个定义规则,编译器可以在en选择任何一个定义d?(这是C内联函数的情况)。没有“内联规则”这暂停了ODR。说明可以有多少个定义、它们可以在哪里以及它们可以是什么的整个规则

假设这两个cpp文件:

0.cc
#包括
课堂测试{
公众:
int num=5;
};
int main(){
试验t;
返回t.num;
}
1.cc
类测试{
公众:

int num=6;//是的,这是一个违反,它是。

是的,它是一个违反,它是。

只是确认一下,一个定义规则不适用于成员函数,因为
内联
规则适用,它挂起该函数的一个定义规则,编译器可以在en选择任何一个定义d?(这是C内联函数的情况)。没有“内联规则”这暂停了ODR。说明可以有多少个定义、它们可以在哪里以及它们可以是什么的整个规则集称为一个定义规则。解释ODR:*每个TU只能有一个定义;*对于非内联函数/变量,整个程序中只能有1个定义;*wh中可以有更多定义类的ole程序,内联函数/变量,只要定义相同。引用以下答案:即:
转到链接阶段。当链接器看到内联标志时,它将挂起该函数的一个定义规则,而不是规则,而是行为。@Dan that(部分)答案有点不正确。正如我所说的,一个内联函数/变量的更多定义可能存在于整个程序中的规则(N4659 C++17草稿中的§6.2.6)是一个定义规则的一部分(§6.2一个定义规则[basic.def.odr])那么内联函数也需要匹配?如果它们不匹配,这也是一种未定义的行为?只是为了确认,一个定义规则不适用于成员函数,因为
inline
规则适用,它会挂起该函数的一个定义规则,编译器可以在最后选择任何一个定义?(这是C内联函数的情况)。没有“内联规则”这暂停了ODR。说明可以有多少个定义、它们可以在哪里以及它们可以是什么的整个规则集称为一个定义规则。解释ODR:*每个TU只能有一个定义;*对于非内联函数/变量,整个程序中只能有1个定义;*wh中可以有更多定义类的ole程序,内联函数/变量,只要定义相同。引用以下答案:即:
转到链接阶段。当链接器看到内联标志时,它将挂起该函数的一个定义规则,而不是规则,而是行为。@Dan that(部分)答案有点不正确。正如我所说的,一个内联函数/变量的更多定义可能存在于整个程序中的规则(N4659 C++17草稿中的§6.2.6)是一个定义规则的一部分(§6.2一个定义规则[basic.def.odr]),所以内联函数也需要匹配?如果它们不匹配,这也是一个未定义的行为?
#include <iostream>

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

int main(){
 test t;
 return t.num;
}
class test{
 public:
 int num = 6; // <-- note this has a different value.
};