C++ 中类成员函数的类型
原文:https://www.studytonight.com/cpp/types-of-member-function.php
我们已经知道什么是成员函数,它们做什么,如何定义成员函数以及如何使用类对象调用它们。现在让我们了解一些可以在 C++ 类中定义的特殊成员函数。以下是不同类型的成员函数:
- 简单功能
- 静态函数
- 常量函数
- 内嵌函数
- 友元功能
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++ 没有被称为纯粹的面向对象语言。因为违反了封装的概念。