C++之类的成员函数的调用 vs. 普通函数的调用

本文探讨C++中成员函数与非成员函数调用的效率问题。C++设计原则保证non-static成员函数调用的效率与非成员函数相当。通过编译器如何处理this指针,解释成员函数调用实际上不带来额外负担,并消除了关于非成员函数效率低的误解。编译器通过改写函数原型、使用this指针和函数别名等步骤实现这一目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先请看下面的语句:

Point3d obj;
Point3d *ptr = &obj;

当使用上述指针或者对象调用成员函数Func()时,会有:

obj.Func();
ptr->Func();

上述调用的背后到底完成了一些什么呢?

假设Func函数的定义如下:

Point3d Point3d::Func() const
{
Float  a = getA();
       Point3d ret;
       ret._x = _x/a;
       ret._y = _y/a;
       ret._z = _z/a;
       return ret;
}


getA的定义为:

float Point3d::getA()
{
return sqrt(_x*_x+_y*_y+_z*_z);
}


那么看过这些函数的定义之后,我们能否得知上述代码的执行过程呢?答案是不行!上述的代码最多能告诉我们

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值