Member function definition outside of class

后端 未结 3 1736
青春惊慌失措
青春惊慌失措 2021-01-19 14:54

Is it possible to define function or method outside class declaration? Such as:

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

int A::bar () 
{
    return          


        
相关标签:
3条回答
  • 2021-01-19 15:18

    It is possible to define but not declare a method outside of the class, similar to how you can prototype functions in C then define them later, ie:

    class A 
    {
        int foo;
        A (): foo (10) {}
        int bar();
    }
    
    // inline only used if function is defined in header
    inline int A::bar () { return foo; }   
    
    0 讨论(0)
  • 2021-01-19 15:35

    You can define a method outside of your class

    // A.h
    #pragma once
    class A 
    {
    public:
        A (): foo (10) {}
        int bar();
    private:
        int foo;
    };
    
    // A.cpp
    int A::bar () 
    {
        return foo;
    }
    

    But you cannot declare a method outside of your class. The declaration must at least be within the class, even if the definition comes later. This is a common way to split up the declarations in *.h files and implementations in *.cpp files.

    0 讨论(0)
  • 2021-01-19 15:43

    Yes, but you have to declare it first in the class, then you can define it elsewhere (typically the source file):

    // Header file
    class A 
    {
        int foo = 10;
        int bar(); // Declaration of bar
    };
    
    // Source file
    int A::bar() // Definition of bar 
    {
        return foo;
    } 
    
    0 讨论(0)
提交回复
热议问题