类之外的成员函数定义

时间:2016-10-07 16:26:54

标签: c++ function declaration definition

是否可以在类声明之外定义函数或方法? 如:

class A 
{
    int foo;
    A (): foo (10) {}
}

int A::bar () 
{
    return foo;
}        

3 个答案:

答案 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文件中的实现的常用方法。