400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

c++ 对象模型 函数

member functions的调用方式

nonstatic member functions

​ 现有如下函数调用:

站在用户的角度思考问题,与客户深入沟通,找到新源网站设计与新源网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网络空间、企业邮箱。业务覆盖新源地区。

float do(const A *_this) {...}
float A::do() const {...}

//第一个函数转换
float do(const A *_this)
{
    
    return sqrt(
    	_this->x * _this->x + _this->y * _this->y + _this->z * _this->z
    )
        
};

//第二个nonstatic member function转换成上面相同的形式nonmember function

virtual member functions

​ 现有如下代码:

class A
{
    virtual A do1() const;
    virtual float do2() const;
}

A a;
A* pt = &a;

pt->do1();
//转化
( *pt->vptr[1] )(pt);

float d = do2();
//转化
float d = ( *this->vptr[2] )( this );

a.do1();
//转化
( *a.vptr[1] )( &a ); 

​ ( * pt -> vptr [1] )( pt )其中:1为virtual table slot的索引值,关联到virtual member function,也就是do1()

​ ( *a.vptr[1] )( &a ) 没有必要,应该这样调用:A::do1()

static member function

指向member functions 的指针

inline functions


本文名称:c++ 对象模型 函数
分享路径:http://mbwzsj.com/article/dsoiejg.html

其他资讯

让你的专属顾问为你服务