类/函数顺序在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++中,类/函数顺序是否重要?我以为没有。请澄清这个问题。
是的,在使用/调用类/函数之前,您必须至少声明它,即使实际的定义直到之后才出现 这就是为什么您经常在头文件中声明类/函数,然后将它们包含在cpp文件的顶部。然后您可以按任何顺序使用这些类/函数,因为它们已经被有效地声明了 请注意,在您的情况下,您可以这样做。()类/函数顺序在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(){//即使定义在后面 看起来这可能是重复
void hi();//现在声明此函数
结构A;//现在已声明此类型
结构B{
A*A;//我们现在可以有一个指向它的指针
};
int main(){
嗨();
返回0;
}
void hi(){//即使定义在后面
看起来这可能是重复的…函数至少应该在使用之前声明。但是一旦声明了它们,顺序就无关紧要了(或者说非常无关紧要)。对于短函数,将相关函数分组可能会稍微好一些(例如f
beforeg
ifg
调用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