C++成员函数调用以及多态实现

本文介绍了C++中的三种成员函数:非静态成员函数、静态成员函数和虚拟成员函数。非静态成员函数通过this指针访问对象数据,静态成员函数不依赖对象调用,而虚拟成员函数涉及虚函数表和虚表指针,用于实现多态。文章深入探讨了虚函数表的结构和在不同继承情况下的表现。
摘要由CSDN通过智能技术生成

C++支持三种类型的成员函数,分别为nostatic、static、virtual,每一种调用方式都不相同。

非静态成员函数(Nonstatic Menber Function)
  1. 改写成员成员函数签名,使其可以接收一个额外参数,这个参数是this指针
int Point::func();
//被改写为
int Point::func(Point* this);//如果成员函数是const的,插入的参数类型为const Point*类型。
  1. 将每一个对非静态数据成员的操作都改写为经过this操作。
  2. 将成员函数写成一个外部函数,对函数名进行"mangling"处理,使之成为独一无二的名称。对于名称的处理并没有统一的标准,各大编译器厂商可能有不同的处理规则。

所以说非静态成员函数跟全局函数并没有太大区别,经过编译器的处理静态绑定之后我们可以认为静态成员函数和全局函数的调用过程是一样的。

静态成员函数(Static Menber Function)

静态成员函数有一些特性:

  1. 不能直接访问类中的非静态成员,包括不能调用非静态成员函数
  2. 不能够声明为const、voliatile和virtual。
  3. 它不需经由对象调用,当然通过对象调用也被允许

除了缺乏一个this指针,静态成员函数与非静态成员函数没有太大区别。在这里通过对象调用和通过指针或引用调用,将被转化为同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值