c++成员函数和全局函数有什么区别
时间: 2023-11-26 13:03:56 浏览: 458
C++成员函数和全局函数的区别主要有以下几点:
1. 形式上的区别:成员函数是属于类的,其定义需要在类的内部进行,而全局函数则是定义在类的外部的函数。
2. 访问权限的区别:成员函数可以访问类的私有成员和受保护成员,而全局函数只能访问公有成员或者外部变量。
3. 调用方式的不同:成员函数需要通过对象来调用,而全局函数可以直接在其他函数或文件中调用。
4. 存储方式的不同:成员函数会随着对象的创建而被分配内存,而全局函数则是在程序的全局数据区分配内存。
总的来说,成员函数是面向对象编程中的重要组成部分,可以被对象所调用,具有类成员的特点;而全局函数则是一种独立存在的函数,只能访问公有成员或者外部变量,具有全局作用域的特点。
相关问题
c++ 中为类重载运算符时成员函数和全局函数的区别
在C++中,重载运算符可以作为成员函数或全局函数来定义。下面是成员函数和全局函数在类重载运算符时的区别。
1. 形式:
成员函数:重载运算符作为类的成员函数被定义,使用类的实例调用。
全局函数:重载运算符作为类外的全局函数被定义,使用运算符符号作为函数名进行调用。
2. 参数:
成员函数:作为成员函数时,重载运算符有一个参数(除了一元运算符,如++, --等)表示运算符的右操作数。左操作数是调用该成员函数的类的实例。
全局函数:作为全局函数时,重载运算符通常有两个参数,分别表示运算符的两个操作数。
3. 实现位置:
成员函数:重载运算符作为类的成员函数实现,因此可以使用类的私有成员变量和保护成员函数。
全局函数:重载运算符作为全局函数时,不能直接访问类的私有成员变量和保护成员函数,需要通过类的公有接口来实现对类的访问。
4. 对称性:
成员函数:由于成员函数将调用者作为左操作数,因此成员函数的操作数的顺序是固定的。例如,对于一个重载的加法运算符,如果a是类的实例,则a.operator+(b)或a+b是可以的,但b.operator+(a)是不行的。
全局函数:全局函数没有这种对称性的问题,因为它不依赖于特定的对象来调用。
综上所述,成员函数和全局函数在类重载运算符时的区别在于形式、参数、实现位置和对称性。选择使用成员函数还是全局函数取决于具体的需求和设计选择。
C++全局函数和友元函数的区别是什么?
C++中的全局函数和友元函数都是定义在类外部的函数,但是它们有以下区别:
1. 访问权限:全局函数不能直接访问类的私有成员,而友元函数可以访问类的私有成员。
2. 关联对象:全局函数不与任何类对象相关联,而友元函数与其关联的类对象相关联。
3. 声明:全局函数不需要在类中进行声明,而友元函数需要在类中进行声明。
4. 定义位置:全局函数的定义位置和其他普通函数一样,可以定义在类的前面或后面,而友元函数的定义位置必须在类的外部,且必须在类声明之后。
总之,友元函数是一种特殊的全局函数,它可以访问类的私有成员,并且与类对象相关联。全局函数不能访问类的私有成员,也不与类对象相关联,因此在使用时需要注意这些区别。
阅读全文