Function 语意学之Member 的各种调用方式

1. C++中支持 3中成员函数: static ,非static,和 virtual 函数,两种数据成员,static和非static的

2. member的各种调用方式

   非static成员函数,在C++中,所有的非 static成员函数都被转化为一个全局的成员函数,并隐式的传给了一个class 的对象的指针,而且选择成员函数的效率与全局函数的效率相同,没有任何负担

  虚成员函数的调用, 将会被转化为 一个指针指向vptr,而vptr指向virtual 函数表

 例如:如果是对 

    ptr->normalize(),normalize() 是一个 虚成员函数,将会在内部转化为 (*ptr->vptr[1])(ptr),

  静态成员函数,如果normalize()是一个static member 函数,则:

   obj.normalize()和 ptr->normalize()将会被转化为 一般的函数条用,因为static的存储在class object 之外, normal_Point3dsfv() 

   而由于static的修饰作用,使得它不能使用对象的指针

   (1) 不能够直接存取其class中的非static member ,在static的作用域范围内,要想访问非static的数据成员,就得使用this指针

  (2) 不能被声明为const,volatile,或者 virtual(需要用到this指针)

  (3)不需要经过object 调用,可以使用class直接去调用 

  static 成员函数,可以成为 callback 回调函数

3. virtual 成员函数 ,考虑单继承,多继承和虚拟 继承的情况 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值