繁体   English   中英

class 之外的成员 function 定义

[英]Member function definition outside of class

是否可以在 class 声明之外定义 function 或方法? 如:

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

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

可以在类之外定义但不声明方法,类似于如何在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; }   

是的,但你必须先在类中声明它,然后你可以在别处定义它(通常是源文件):

// Header file
class A 
{
    int foo = 10;
    int bar(); // Declaration of bar
};

// Source file
int A::bar() // Definition of bar 
{
    return foo;
} 

您可以在类之外定义方法

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

// A.cpp
int A::bar () 
{
    return foo;
}

但是你不能在你的课外声明一个方法。 该声明必须至少在该类中,即使该定义稍后出现。 这是分解*.h文件中的声明和*.cpp文件中的实现的常用方法。

/* 是的,我们可以在类内部声明一个方法/函数,并且可以在类外部使用类名和范围解析运算符来定义它。 */

class Calculator{
    int num1,num2;
public:
    void setData(int x, int y){
        num1 = x; num2 = y;
    }
    //Declaration of sum function inside the class
    int sum();
};
// Definition of sum function outside the class
int Calculator::sum(){
    return num1+num2;
}

/* 我想扩展这个问题:那么为什么我们在类之外定义成员函数。 在类之外定义它有什么意义。 如果我们在类中声明它。 它会有所作为吗。 */

是的,可以在 class 之外定义一个成员 function。 有两种方法可以定义成员 function。

我们可以在 class 定义内定义 在 class 定义外定义使用 scope 操作符。

要在 class 定义之外定义成员 function,我们必须使用

scope分辨率:: 运算符以及 class 名称和 function 名称。 有关更多信息,您可以在此处阅读带有解释的最佳示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM