简述成员函数、全局函数和友元函数的差别
时间: 2024-04-02 18:31:29 浏览: 53
成员函数是定义在类中的函数,可以访问类中的所有成员变量和成员函数。成员函数可以分为 const 和非 const 成员函数,const 成员函数不会修改对象的状态,非 const 成员函数可以修改对象的状态。
全局函数是定义在类外的函数,可以访问类的公共成员和友元成员,但不能访问类的私有成员。
友元函数是在类中声明为友元的非成员函数,可以访问类的私有成员和保护成员。友元函数不是成员函数,但可以访问类的成员。
总的来说,成员函数是类的一部分,可以访问所有成员变量和成员函数;全局函数和友元函数不属于类,不能访问私有成员,但友元函数可以在类中声明为友元,允许其访问私有成员。
相关问题
成员函数,全局函数和友元函数的区别
成员函数是属于类的函数,只能被该类的对象调用,可以访问该类中的所有成员变量和成员函数,但无法访问该类的私有静态成员变量和私有静态成员函数。
全局函数是在类外定义的函数,可以被任何函数或对象调用,但无法访问该类的私有成员变量和私有成员函数,需要通过该类的公有接口进行访问。
友元函数是在类中声明的非成员函数,可以访问该类的私有成员变量和私有成员函数,但不属于该类的成员函数,需要在类外定义。友元函数可以是全局函数,也可以是另一个类的成员函数。
总的来说,成员函数是类的一部分,全局函数和友元函数是独立于类的函数,但是友元函数可以访问类的私有成员,因此可以用于提高程序的灵活性和安全性。
成员函数和友元函数的不同之处
成员函数和友元函数是在面向对象编程中常用的两种函数类型,它们有以下不同之处:
1. 定义位置:成员函数是定义在类内部的函数,而友元函数是定义在类外部的函数。
2. 访问权限:成员函数可以直接访问类的私有成员和保护成员,而友元函数可以在类中声明为友元后,可以访问类的私有成员和保护成员。
3. 调用方式:成员函数通过对象来调用,而友元函数可以直接调用或通过对象调用。
4. 参数传递:成员函数的隐含参数是调用该函数的对象本身,而友元函数没有隐含参数。
5. 继承关系:成员函数可以被继承,子类可以重写父类的成员函数,而友元函数不能被继承。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)