当前位置: 网站首页 > 开发语言 > C/C++

《深度探索C++对象模型》读书笔记(4)

时间:1970-1-1 08:33:31来源: C/C++作者:admin 点击:2次 字体 [ С]

  ***非静态成员函数(Nonstatic Member Functions)***

   C++的设计准则之一就是:nonstatic member function至少必须和一般的nonmember function有相同的效率。也就是说,如果我们要在以下两个函数之间作选择:

 float magnitude3d(const Point3d *this) { ... }
float Point3d::magnitude3d() const { ... }

   那么选择member function不应该带来什么额外负担。因为编译器内部已将“member函数实体”转化为对等的“nonmember函数实体”。下面是magnitude()的一个nonmember定义:

 float Pointer3d::magnitude() const
{
return sqrt(_x*_x + _y*_y + _z*_z);
}
// 内部转化为
float magnitude_7Point3dFv(const Point3d *this)  //已对函数名称进行“mangling”处理
{
return sqrt(this->_x*this->_x + this->_y*this->_y + this->_z*this->_z);
}

   现在,对该函数的每一个调用操作也都必须转换:

 obj.magnitude();
// 转换为
magnitude_7Point3dFv(&obj);

发表评论
验证码:
最新评论