C++学习--static函数,内联(inline)函数, 友元 (friend) 函数

简单总结一下C++中的各种特殊函数


1.static成员函数

定义在类体中,定义时在前面加static关键字:

class Test{

static void getID();

}

static 函数属于类,但是不属于类的任何一个对象,不能访问类的成员。

一般的成员函数都有隐含的this指针,但是static成员函数没有。

因为static成员函数不是任何对象的组成部分,所以static成员函数不能被声明为const(将函数声明为const,就是承诺不会修改该函数所属的对象)

static成员函数也不能为虚函数

static成员函数遵循正常的公有和私有访问规则(在类外不能访问私有的static成员函数)。


2.内联函数

内联函数的声明和定义在一起。如果是类的成员函数,可以省略inline关键字。

class Test{

public:

int getID(){return _id;}  //默认为inline函数

private:

int _id;

};

inline int getMax(int x,int y){return (x > y) ? x : y;}  //在类外声明一个inline函数,inline不能省略


inline函数可以减少函数调用的开销。

普通函数调用:(1)调用前保存寄存器,并在返回时恢复;(2)复制实参;(3)程序转向一个新的位置执行。

inline函数调用:在调用点“内联地”展开。它类似宏函数的文本替换,但是它是实际的函数,有形参检查,安全检查和语法检查。而宏函数没有。


一般来说,内联函数都是小的,几行代码而且经常被调用的函数。大多数编译器不支持递归函数的内联。

内联函数作为成员函数时,调用和继承关系和普通成员函数无异。


3.友元函数

友元函数可以破坏C++的封装,可以访问一个类的非公有成员。

友元的定义虽然在类中,但是它并不属于这个类或者类的对象。

只要包含friend函数的作用域就可以直接调用它。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值