C++温故补缺(六):友元函数、内联函数和this指针

友元函数允许非成员函数访问类的私有和保护成员,而内联函数则在编译时进行代码嵌入以提高效率。this指针是每个成员函数的隐含参数,用于指向调用该成员函数的对象。内联函数适用于小型函数,避免运行时函数调用的开销,但不应包含循环、递归或开关语句。
摘要由CSDN通过智能技术生成

友元函数、内联函数和this指针

友元函数

友元函数是定义在类的外部,但有权访问类的所有私有(private)和保护(protectd)成员.友元函数的原型在类的定义中出现,但它并不是类的成员函数

友元不止可以是函数,还可以是类,称为友元类

声明友元函数/类,用friend关键字

如:

#include<iostream>
using namespace std;

class box{
    private:
        int lenght;
        int width;
        int height;
    public:
        friend void getter(box b);
        box(int l,int w,int h):lenght(l),width(w),height(h){};
};

void getter(box b){
    cout<<"length:"<<b.lenght<<endl;
    cout<<"width:"<<b.width<<endl;
    cout<<"height:"<<b.height;
}

int main(){
    box b1(2,3,5);
    getter(b1);
}

友元函数没有this指针,参数主要有三种情况:

  • 非static成员,用对象做参数

  • 访问static成员或全局变量时,不需要对象做参数

  • 如果要访问的对象是一个全局对象,也不需要参数

友元函数的调用同普通函数,不需要通过类或对象

内联函数

inline void fun(){
    cout<<"hello";
}
int main(){
    fun();
}

内联函数使用关键字inline来声明,它和普通函数的区别是:

普通函数在运行时被调用,内联函数在编译时嵌入

也是空间换时间,增加了父作用域的空间使用,缩短了运行时的花销

使用内联函数的原则:

  • 内联函数一般都是小于10行的小函数

  • 不允许使用循环,递归和开关语句

类中声明的函数,定义在类外,实际也是内联函数,只是省略了inline说明符

this指针

this指针是指向对象本身的指针,在所有的成员函数的参数都隐含了this指针,可以通过this指针调用所有的成员

class box{
    private:
        ...
    public:
        void print(this);
};
  • 类似python的self参数

  • 友元函数没有this指针,因为它不是类的成员函数

  • this是一个const指针,不允许修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值