是否可以在类声明之外定义函数或方法? 如:
class A
{
int foo;
A (): foo (10) {}
}
int A::bar ()
{
return foo;
}
答案 0 :(得分:4)
可以定义但不能在类之外声明一个方法,类似于如何在C中原型化函数然后在以后定义它们,即:
class A
{
int foo;
A (): foo (10) {}
int bar();
}
// inline only used if function is defined in header
inline int A::bar () { return foo; }
答案 1 :(得分:3)
是的,但你必须先在类中声明,然后你可以在其他地方(通常是源文件)定义它:
// Header file
class A
{
int foo = 10;
int bar(); // Declaration of bar
};
// Source file
int A::bar() // Definition of bar
{
return foo;
}
答案 2 :(得分:2)
您可以定义类外的方法
// A.h
#pragma once
class A
{
public:
A (): foo (10) {}
int bar();
private:
int foo;
};
// A.cpp
int A::bar ()
{
return foo;
}
但你不能声明你班级以外的方法。该声明必须至少在该类中,即使该定义稍后出现。这是分割*.h
文件中的声明和*.cpp
文件中的实现的常用方法。