类/函数顺序在C+中重要吗+;? 我开始学习C++。在IDE代码块中,编译: #include <iostream> using namespace std; struct A {}; struct B { A a; } void hi() { cout << "hi" << endl; } int main() { hi(); return 0; } 在C++中,类/函数顺序是否重要?我以为没有。请澄清这个问题。

类/函数顺序在C+中重要吗+;? 我开始学习C++。在IDE代码块中,编译: #include <iostream> using namespace std; struct A {}; struct B { A a; } void hi() { cout << "hi" << endl; } int main() { hi(); return 0; } 在C++中,类/函数顺序是否重要?我以为没有。请澄清这个问题。,c++,function,C++,Function,是的,在使用/调用类/函数之前,您必须至少声明它,即使实际的定义直到之后才出现 这就是为什么您经常在头文件中声明类/函数,然后将它们包含在cpp文件的顶部。然后您可以按任何顺序使用这些类/函数,因为它们已经被有效地声明了 请注意,在您的情况下,您可以这样做。() void hi();//现在声明此函数 结构A;//现在已声明此类型 结构B{ A*A;//我们现在可以有一个指向它的指针 }; int main(){ 嗨(); 返回0; } void hi(){//即使定义在后面 看起来这可能是重复

是的,在使用/调用类/函数之前,您必须至少声明它,即使实际的定义直到之后才出现

这就是为什么您经常在头文件中声明类/函数,然后将它们包含在cpp文件的顶部。然后您可以按任何顺序使用这些类/函数,因为它们已经被有效地声明了

请注意,在您的情况下,您可以这样做。()

void hi();//现在声明此函数
结构A;//现在已声明此类型
结构B{
A*A;//我们现在可以有一个指向它的指针
};
int main(){
嗨();
返回0;
}
void hi(){//即使定义在后面

看起来这可能是重复的…函数至少应该在使用之前声明。但是一旦声明了它们,顺序就无关紧要了(或者说非常无关紧要)。对于短函数,将相关函数分组可能会稍微好一些(例如
f
before
g
if
g
调用
f
)可能是因为缓存问题。但是这常常是不相关的(编译器经常会对生成的函数顺序进行重新编译)。我建议你在C++上得到一本书,而不是通过在IDE中学习来学习语言。
struct B {
    A a;
}

struct A {};

int main() {
    hi();
    return 0;
}

void hi() {
    cout << "hi" << endl;
}
error: 'A' does not name a type
error: 'hi' was not declared in this scope
void hi();    // This function is now declared

struct A; // This type is now declared

struct B {
    A* a; // we can now have a pointer to it
};

int main() {
    hi();
    return 0;
}

void hi() {    // Even though the definition is afterwards
    cout << "hi" << endl;
}

struct A {}; // now A has a definition