C++ 中类成员函数的类型

原文:https://www.studytonight.com/cpp/types-of-member-function.php

我们已经知道什么是成员函数,它们做什么,如何定义成员函数以及如何使用类对象调用它们。现在让我们了解一些可以在 C++ 类中定义的特殊成员函数。以下是不同类型的成员函数:

  1. 简单功能
  2. 静态函数
  3. 常量函数
  4. 内嵌函数
  5. 友元功能

C++ 中的简单成员函数

这些是基本的成员函数,没有任何特殊的关键字如静态等作为前缀。下面给出形式的所有一般成员函数被称为简单的基本成员函数。

return_type functionName(parameter_list)
{
    function body;
}

C++ 中的静态成员函数

静态是保持其位置的东西。Static 是一个可以和数据成员以及成员函数一起使用的关键字。我们稍后将详细讨论这一点。到目前为止,我们将只讨论它在成员函数中的用法。

通过使用带有函数名的static关键字使函数成为静态函数。这些函数对整个类起作用,而不是对类的特定对象起作用。

可以使用对象和直接成员访问.操作符调用。但是,更典型的是使用类名和作用域解析::运算符单独调用静态成员函数。

例如:

class X
{
    public:
    static void f()
    {
        // statement
    }
};

int main()
{
    X::f();   // calling member function directly with class name
}

这些函数不能访问普通的数据成员和成员函数,只能在里面调用static数据成员和static成员函数。

它没有任何“这个”关键字,这就是它无法访问普通成员的原因。我们后面会研究关于“这个”的关键字。


C++ 中的常量成员函数

后面我们会详细研究 Const 关键字( Const 关键字,但作为介绍,Const 关键字让变量保持不变,也就是说一旦定义,就有值不能变。

与成员函数一起使用时,此类成员函数永远不能修改对象或其相关数据成员。

// basic syntax of const Member Function

void fun() const 
{
    // statement
}

C++ 中的内联函数

默认情况下,类定义中定义的所有成员函数都声明为 Inline。我们将在下一个主题中详细研究内联函数


C++ 中的友元函数

友元函数实际上不是类成员函数。友元函数是让私有访问非类函数。可以将全局函数声明为友元,也可以将其他类的成员函数声明为友元。

例如:

class WithFriend
{
    int i;
    public:
    friend void fun(); // global function as friend
};

void fun()
{
    WithFriend wf;
    wf.i=10;  // access to private data member
    cout << wf.i;
}

int main()
{
    fun(); //Can be called directly
}

因此,友元函数可以通过创建类的对象来访问私有数据成员。同样我们也可以把其他某个类的函数做成友元,或者我们也可以把整个类做成友元类

class Other
{
    void fun();
};

class WithFriend
{
    private:
    int i;
    public:
    void getdata();  // Member function of class WithFriend

    // making function of class Other as friend here
    friend void Other::fun();   

    // making the complete class as friend
    friend class Other;  
};

当我们将一个类作为友元时,它的所有成员函数都会自动变成友元函数。

友元函数是一个原因,为什么 C++ 没有被称为纯粹的面向对象语言。因为违反了封装的概念。