C++ ----------- 内置函数 && 友元 && 常成员函数

内置函数

在函数调用之前,要记下当时执行的指令地址,还要“保护现场”,以便在函数调用之后继续执行。在函数调用之后,流程返回到先前记下的地址处,并且根据记下的信息“恢复现场”,然后继续执行。这些都需要花费时间,如果有的函数频繁使用,用时间会很长,从而降低程序的执行效率。
C++提供一种高效率的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中,从而不是讲流程转出去。这种嵌入到主函数中的函数称为内置函数(内嵌函数)

指定内置函数的放大,只需在函数首行的左端加一个关键字 inline

inline int max(int a, int b,int c)
{
	if(b > a)  a = b;
	if(c > a)  c = a;
	return a; 
}

可以在声明函数和定义函数同时写inline,也可以只在函数声明时加inline,而定义函数不加inline。一般内置函数语句不超过5个,内置函数中不能包括复杂的控制语句,如循环语句和switch语句。
如果在类体重定义的成员函数中不包括循环等控制结构,C++系统自动地对他们作为内置函数处理。这是因为,在类内定义的成员函数,可以省略inline,这些成员函数被隐含的指定为内置函数。

友元

  • 友元函数
    如果在本类以外的其他地方定义了一个函数,在可以类体重用friend对其进行声明,此函数就称为本类的友元函数。友元函数可以访问这个类中的私有成员。
class Time
{
	public:
			friend void display(Time &);
			.......	
};

void display(Time&t)
{
	cout<<t.hour<<":"<<t.minute<<endl;
}

在引用私有数据成员时,必须加上对象名。因为display函数不是Time类的成员函数,没有this指针,不能默认引用Time类的数据成员。

  • 友元成员函数
    friend函数不仅可以是一般函数(非成员函数),而且还可以是另一个类中的成员函数,这个类之前为定义,则需要该类提前引用申明。
class Date
{
	public:
		friend void Time::display(Date &);
};
.......
void Time::display(Date &d)
{
	cout<<d.month<<"/"<<d.day<<endl;
	cout<<hour<<":"<<minute<<endl;
}
  • 友元类
    将一个B类声明为A类的friend,B类就是A类的友元类,B类中的所有函数都是A类的友元函数,可以访问A类中的所有成员。友元的关系不能传递,即如果B类是A类的友元类,C类是B类的友元类,不等于C类是A类的友元类。

常成员函数

void Time::fun()const
{
	......;
}

fun() 是Time类中的常成员函数,可以引用,但不能修改本类中的数据成员。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值