Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.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
为什么';t C+的成员函数的顺序+;结构被定义为物质? 我正在学习C++中的结构,我注意到一些特殊的东西:_C++_Struct_Member Functions - Fatal编程技术网

为什么';t C+的成员函数的顺序+;结构被定义为物质? 我正在学习C++中的结构,我注意到一些特殊的东西:

为什么';t C+的成员函数的顺序+;结构被定义为物质? 我正在学习C++中的结构,我注意到一些特殊的东西:,c++,struct,member-functions,C++,Struct,Member Functions,在调用函数时,结构的成员函数的定义顺序并不重要 例如 #include<bits/stdc++.h> using namespace std; struct var { int returnTwo() { return 2*returnOne(); } int returnOne() { return 1; } }; int main() { var a; cout<<a.r

在调用函数时,结构的成员函数的定义顺序并不重要

例如

#include<bits/stdc++.h>
using namespace std;
struct var
{
    int returnTwo()
    {
        return 2*returnOne();
    }
    int returnOne()
    {
        return 1;
    }
};

int main()
{
    var a;
    cout<<a.returnTwo();
    return 0;
}
#包括
使用名称空间std;
结构变量
{
int returnTwo()
{
return2*returnOne();
}
int returnOne()
{
返回1;
}
};
int main()
{
var a;

cout函数定义的顺序无关紧要,只要编译器在调用它的语句处或之前可以看到每个函数的声明。编译器可以看到完整的
结构
/
定义,也可以看到其中声明的所有函数。还有成员函数一个
结构
/
的成员可以访问该
结构
/
的所有成员,即使这些成员稍后在
结构
/
定义中声明。无论函数是内联定义还是在
结构
/
定义之后定义的。“函数定义正常”。内联定义也是正常的!这样做有一些优点和缺点,例如解决循环DEP与更好的优化等等。顺序并不重要,因为访问是通过名称(符号)进行的而不是第n个函数号。即使它超过了数字,纯假设的声明也必须是可见的。由于您的观察有部分错误,没有具体的原因,因为如果您将包含成员函数声明的类定义包含到翻译单元中,那么一切都会按照预期进行编译和工作。(main.cpp)关于一般规则,您是对的:函数必须在调用点之前声明。但类定义有一个特殊规则。这过于简单,但编译器会等到类定义结束时才解析类中使用的名称。因此,对于定义为在类定义内部调用另一个在使用点之后才声明的成员函数。函数的定义顺序无关紧要,只要编译器在调用它的语句时或之前可以看到每个函数的声明。编译器可以看到完整的
结构
/
定义,因此可以看到其中声明的所有函数。因此
结构
/
的成员函数可以访问该
结构
/
的所有成员,即使这些成员稍后在
结构
/
定义中声明。并且无论是什么时候er函数是内联定义的,或者是在
结构
/
定义之后定义的。“函数被正常定义”。内联定义也是正常的!这样做有一些优点和缺点,例如解决循环DEP与更好的优化等。顺序并不重要,因为访问是通过名称(符号)进行的而不是第n个函数号。即使它超过了数字,纯假设的声明也必须是可见的。由于您的观察有部分错误,没有具体的原因,因为如果您将包含成员函数声明的类定义包含到翻译单元中,那么一切都会按照预期进行编译和工作。(main.cpp)关于一般规则,您是对的:函数必须在调用点之前声明。但类定义有一个特殊规则。这过于简单,但编译器会等到类定义结束时才解析类中使用的名称。因此,对于定义为在类定义中调用另一个成员函数,该函数在使用该函数的点之后才声明。